r - 指定跨新年的日期轴的限制
问题描述
我正在使用这个数据集来绘制月度摘要。我在 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-objects 并定义轴的限制,使其在 Oct 开始并在 Apr 结束?
解决方案
推荐阅读
- amazon-web-services - CloudFront:每 2-3 秒更新 10 KB 数据
- http - nginx在assets文件夹下找不到js文件
- javascript - 无法在客户端使用 XMLHttpRequest 读取 Node.js 中的在线文件内容
- mysql - 如何在定时函数中从客户端代码实时接收 MySQL 数据库中的任何更改?
- excel - 将多个 Excel 工作表转换为单独的 csv 文件
- powerbi - PowerBI - 比较两组相似的数据(多对多)
- java - JTextArea 中的文本位置
- r - 使用折叠行时出现星号
- java - JavaFX 从 TableView 中每一行的第 n 列中提取值
- android - 适配器未填充 RecyclerView