2017-02-23 77 views
0

我想繪製幾年的時間序列,但僅限於夏季。我的問題是當我嘗試將日期添加到X軸。比方說,我的數據結構如下:繪製季節時添加日期ggplot2

 day  date value  Region variable Data 
     1 1998-06-01 72.69090  IP  O3 OBS 
     2 1998-06-02 86.09606  IP  O3 OBS 
     3 1998-06-03 93.50078  IP  O3 OBS 
     4 1998-06-04 96.41037  IP  O3 OBS 
     ......................................... 
     1194 2010-08-29 97.36273  IP  O3 OBS 
     1195 2010-08-30 100.09310  IP  O3 OBS 
     1196 2010-08-31 98.55973  IP  O3 OBS 

,我轉換DAT $日期日期

我做了我的情節:

m <- ggplot(dat, aes(day, value)) + 
     geom_line(aes(color=Data),size=0.3,na.rm=TRUE) 

在這種情況下,我的情節是這樣的: enter image description here

如果我使用dat $ date代替:

m <- ggplot(dat, aes(date, value)) + 
     geom_line(aes(color=Data),size=0.3,na.rm=TRUE) + 
     scale_x_date(date_breaks ="1 year",labels = date_format("%Y")) 

然後我會在: enter image description here

所以,我怎麼可以添加日期,但得到類似於第一個的陰謀? 我想這是因爲我只能密謀3個月,但我想要持續。任何想法?

在此先感謝

+0

我無法重現該問題。你應該提供一個可重複的例子。 – Haboryme

回答

1

可以使x軸與定製的休息,因爲日期或連續軸不會跳過個月。首先你要製作一個你想要繪製的日子的因素,而不是構造一個自定義的中斷軸。

set.seed(314) 
dat <- data.frame(value = rnorm(1000, mean = 90, sd = 20), 
       day = as.Date('2017-01-01')+1:1000) 
library(ggplot2) 
library(lubridate) 

dat.p <- dat[month(dat$day) %in% c(6,7,8),] 

# plot with a date axis 
ggplot(dat.p, aes(day, value)) + geom_line(size=0.3,na.rm=TRUE) 

dat.p$x <- factor(dat.p$day) 

dat.b <- dat.p[mday(dat.p$day)==1,] 

#plot with a custom axis 

ggplot(dat.p, aes(x = x, y = value, group = 1)) + geom_line(size=0.3,na.rm=TRUE) + 
    scale_x_discrete(breaks = dat.b$x, labels = dat.b$day) 
+0

非常感謝,爲我工作。 – user3231352