使用ggplot2在x轴上添加月份刻度线

3

我正在尝试使用ggplot2在x轴上月份之间添加刻度线,类似于这样的图表:

enter image description here

而不是标准的在月份处添加刻度线。

我目前的处理过程如下(以示例为例):

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轴刻度放在月份之间。我尝试使用:

 minor_breaks=date_breaks("2 weeks")

在scale_x_date行(以及其他几个变体)中,但是minor_breaks对我似乎没有起作用。我也尝试了其他变体。
 myminor=seq(from=1,to=365,by=15)

我尝试使用它来处理小休息,但这也不起作用。最后,我尝试了

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

但这也证明是无效的。我感觉这是一个简单的修复,但是我卡住了。


请查看此处的示例:http://docs.ggplot2.org/0.9.3.1/scale_datetime.html - infominer
我在发布这里之前就看过那些内容了,但还是谢谢!我的问题是,我想保留当前使用 date_breaks 标记 x 轴的方式(即上面 - Jan-14、Feb-14 等),只是更改刻度。 - user3376927
是的,那需要一些工作。让我想想一个技巧。 - infominer
1个回答

4
相对而言有些不太正规,但更接近于您所需求的内容:

相对而言有些不太正规,但更接近于您所需求的内容:

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


无论是不是hacky,你都是一个魔术师!我能够复制你发布的示例,并经过一些调整,使用自己的数据进行了复制 - 看看那个漂亮的x轴!我太新了,没有足够的声望来投票支持你的解决方案,但它确实起作用了 - 非常感谢! - user3376927
1
这确实很hacky。现在有更好的解决方案吗? - mzuba

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接