【问题标题】:R ggplot2: labels on time axis to monthly binsR ggplot2:时间轴上的标签到每月的垃圾箱
【发布时间】:2018-11-28 09:25:42
【问题描述】:

我正在尝试调整 ggplot 标记轴的方式。我的代码是:

x = as.POSIXct(c(1, 9999999), origin="1970-01-01 00:00:00 CET")
y = c(1,2)
df = data.frame(x=x, y=y)
ggplot()+
geom_line(data = df, aes(y=y, x=x))

它会产生以下输出:

我认为在月中放置标签会很直观,摆脱月中网格线等等......有点像这样:

这可以用ggplot2完成吗?

【问题讨论】:

  • 你可以在 scale_x_datetime 中设置 date_breaks 和 date_labels
  • 谢谢,我能够摆脱我不想要的网格线 scale_x_datetime(date_minor_breaks = "1 month", date_labels = "%b") 但是我如何移动标签到中间并获得更清晰的月份分隔线?我不想要放置标签的网格线...

标签: r ggplot2 labels


【解决方案1】:

这是一个非常 hacky 的解决方案,但它是一个选项。我认为label on minor breaks only 是不可能的,所以要执行您要查找的操作,您需要在主要中断处添加标签,用空格(或者可能是制表符)偏移标签,然后隐藏次要中断面板行,例如所以:

ggplot()+
  geom_line(data = df, aes(y=y, x=x)) +
  scale_x_datetime(date_breaks = "1 month", date_labels=paste0("                                                     ","%b")) +
  theme(panel.grid.minor = element_blank())

【讨论】:

  • 谢谢,这对我有用。您是否也碰巧知道是否有办法调整月份之间的分隔线长度?
  • @PascalIv,您可以使用theme(axis.ticks.length = unit(2,"mm")) 更改所有轴刻度的长度,在unit() 中替换您想要的长度和单位。但是,据我所知,这将改变 x 和 y 刻度线,您无法将它们分开。如果您只希望 x 轴标记更长,那么您将需要使用自定义 grobs。这里有四个很好的解决方案,您可以根据自己的需要进行调整:stackoverflow.com/questions/29824773/…
猜你喜欢
  • 2020-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多