2014-03-05 44 views
1

我嘗試添加使用GGPLOT2 之間在x軸的幾個月蜱在x軸上月之間添加蜱剔個月。使用GGPLOT2

我進程迄今已(例如)如下:

y=(1:1:12) 
x=seq(as.Date("2014-01-01"), as.Date("2014-12-31"), by="months") 
df=data.frame(x,y) 
g<-ggplot(df,aes(x,y)) 
g<-g+geom_line() 
g<-g+scale_x_date(labels = date_format("%b-%y"),breaks = date_breaks("months")) 

這給了我:

enter image description here

我想那些x軸蜱是間個月。我在scale_x_date線使用

minor_breaks=date_breaks("2 weeks") 

(連同其他幾個變化)試過了,但minor_breaks似乎並沒有對我的工作。我也嘗試了

myminor=seq(from=1,to=365,by=15) 

並將其用於minor_breaks,但這也不起作用。最後,我試了

g<-g+theme(axis.ticks.x=element_line(myminor)) 

但這也證明是無效的。我覺得這是一個簡單的修復,但我卡住了。

+0

看一看這裏的例子http://docs.ggplot2.org/0.9.3.1/scale_datetime .html – infominer

+0

我在之前看過這些內容,但謝謝!我的問題是,我想保留我的x軸標記爲date_breaks的時間(即1月14日,2月14日等),但只是更改刻度。 – user3376927

+0

雅,這將需要一些工作。讓我想起一個破解 – infominer

回答

1

相當哈克,但稍微接近於你彷彿想:

library(ggplot2) 
library(scales) 
library(lubridate) 
y=(1:12) 
x=seq(as.Date("2014-01-01"), as.Date("2014-12-31"), by="months") 
df=data.frame(x,y) 
g<-ggplot(df,aes(x,y)) 
g<-g+geom_line() 

labels <- date_format("%b")(x) 
breaks <- as.Date(sort(c(as.POSIXct(x), 
         as.POSIXct(seq(as.Date("2014-01-15"), 
             as.Date("2014-12-31"), by="months")), 
         ymd("2015-1-1")))) 
labels <- c("", 
      as.vector(rbind(labels, 
          rep("", length(labels))))) 

g + scale_x_date(labels = labels, breaks = breaks, limits=range(breaks)) + 
    theme(axis.ticks.x=element_line(colour=c("black", 
              rep(c(NA, "black"), t=12))), 
      panel.grid.major.x=element_line(colour=c("white", 
                rep(c(NA, "white"), t=12))), 
      panel.grid.minor.x=element_blank()) 

Imgur

+0

哈克或不,你是魔術師!我能夠複製你發佈的例子,經過一點調整就可以用我自己的數據複製 - 看看[好看的x軸](http://i.imgur.com/5ZaNmA4.png)!我太新了,我沒有足夠的聲望來投票你的解決方案,但它的工作 - 謝謝一堆! – user3376927