我有这个数据集,正在与我一起每月进行绘图的地方总结。我在ggplot2中遇到的一个问题是让x轴从第10个月到第12个月,然后继续从第1个月到第4个月。在下面的示例中,我展示了这一点使用20年的数据集,其中我删除了5月到9月的几个月并绘制其余部分。
library(lubridate)
library(ggplot2)
mon=seq.Date(from=as.Date("2000-01-01"),to=as.Date("2019-12-01"),by="month")
val=rnorm(length(mon))
dd=data.frame(mon,val)
ddsub=subset(dd,month(mon)<5 |month(mon) >9)
ggplot(data=ddsub,aes(month(mon),val,group=month(mon))) + geom_boxplot() +
xlab("Month") + scale_x_continuous(breaks=c(1:12))
我希望x轴从10月开始,并持续到今年4月底。由于month(ddsub$mon)
返回的数值导致水平轴连续,因此我没有发现任何巧妙的方式来打破升序的数字顺序。
我唯一的解决方案是将月份定义为因子,然后以正确的方式对其进行重新排序
mon_factor=as.factor(month(ddsub$mon))
ddsub$mon_ahead=reorder(mon_factor,rep(c(4,5,6,7,1,2,3),20))
ggplot(data=ddsub,aes(mon_ahead,val)) + geom_boxplot() + xlab("Month")
虽然此方法有效,但我认为它不是一个优雅的解决方案。必须麻烦定义一个新的月份变量,然后对其重新排序。
有人知道是否可以直接使用Date对象并定义轴的限制,使其从十月开始到四月结束?