旋转日期格式的坐标轴标签

22

有人知道如何在 ggplot2 中旋转日期格式的坐标轴刻度吗?我想要在 x 轴上以 45° 角度获取带有“日期-月份”标签(例如“1985-5”)的标签。

数据样本:

Station Date Ptot
A 1980-02 16
A 1980-03 19
A 1980-04 40
A 1980-05 48
A 1980-06 NA
A 1980-07 18.5
A 1980-08 24.6
B 1980-07 50.8
B 1980-08 28.9
B 1980-09 32.9
B 1980-10 47.9
B 1980-11 16.3

我尝试了这个:

library(ggplot2)
library(scales)

plot <- ggplot(data=na.omit(data), aes(x=Date, y=Ptot, group=Station))+
   geom_line()+
   facet_grid(Station~.)+
   scale_x_date(breaks = "year", labels=date_format("%Y-%m"))+
   xlab("Year")+
   ylab("Prec (mm)")+
   labs(colour = "Station")+
   theme(axis.text.x = element_text(angle = 45, hjust = 1))+
   theme_bw()

plot

但是它不起作用。

谢谢!


1
你需要提供一个更好的可重现的例子,包括数据和完整代码。 - Arun
好的,我刚刚改进了问题的细节... - user2165907
请查看@Didzis的编辑,他解释了您的“日期”列存在的问题。 - Arun
1个回答

53

首先,您应该将列Date更改为日期格式。由于日期中没有提供具体的日数,因此您应该为每个日期添加例如01,并将它们转换。

data$Date<-as.Date(paste(data$Date,"-01",sep=""),format="%Y-%m-%d")
为了正确地在 x 轴下方放置标签,您不仅应设置 angle=,还应设置 hjust=1,以确保标签的末尾放置在刻度线下方。此外,在轴文本的主题规范之前应放置 theme_bw()
ggplot(data=na.omit(data), aes(x=Date, y=Ptot, group=Station))+
  geom_line()+
  facet_grid(Station~.)+
  scale_x_date(breaks = "month", labels=date_format("%Y-%m"))+
  xlab("Year")+
  ylab("Prec (mm)")+theme_bw()+
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

在此输入图片描述


我正要写那个。 - Arun
谢谢!我没有提到我已经对我的“日期”列进行了日期转换……我还需要学习优化使用这个论坛的方法。我的问题在于theme_bw()的位置。 - user2165907
2
@user2165907 theme_bw() 还为 axis.text 设置了参数,因此应该在您的参数之前放置。 - Didzis Elferts
2
更新:现在您可能需要添加 vjust = 0.5 以获得更好的对齐。感谢 @jupp0r 在此答案中的评论(https://dev59.com/mnM_5IYBdhLWcg3wjj0p#1331400) 主题(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))。 - micstr

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