【问题标题】:Adding ticks between months on x-axis using ggplot2使用ggplot2在x轴上添加月份之间的刻度
【发布时间】:2014-03-05 20:47:20
【问题描述】:

我正在尝试使用 ggplot2 在 x 轴上的月份之间添加刻度 - 像这样:

而不是标准的刻度月份。

到目前为止,我的过程如下(例如):

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"))

这给了我:

我希望那些 x 轴刻度在月份之间。我试过使用

 minor_breaks=date_breaks("2 weeks")

在 scale_x_date 行中(以及其他几个变体),但 minor_breaks 似乎对我不起作用。我也尝试过

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

并将其用于minor_breaks,但这也不起作用。最后,我尝试了

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

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

【问题讨论】:

  • 我在发帖之前看过之前的那些,但是谢谢!我的问题是我想保持我的 x 轴当前使用 date_breaks 标记的方式(即,以上 - Jan-14、Feb-14 等),但只需更改刻度。
  • 是的,这需要一些工作。让我想想办法

标签: r ggplot2 axis-labels


【解决方案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())

【讨论】:

  • Hacky 与否,你是个魔术师!我能够复制您发布的示例,并且经过一些调整后能够使用我自己的数据复制它 - 看看 good looking x-axis!我太新了,以至于我没有足够的声誉来投票支持您的解决方案,但它确实有效 - 非常感谢!
  • 这确实很hacky。现在有更好的解决方案吗?
猜你喜欢
  • 2019-09-06
  • 1970-01-01
  • 2018-10-01
  • 2021-10-11
  • 1970-01-01
  • 2021-06-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多