如何用ggplot从指定日期(2019年12月)绘制到最新可用日期的图表
修改方案
要让图表自动适配数据中的最新日期,只需替换scale_x_date里固定的结束日期,改用数据中time列的最大值即可,具体修改如下:
修改后的完整代码
library(ggplot2) library(scales) # 需加载scales包调用date_format函数 plot2 <- ggplot(taxa_atur, aes(x=time, y=values, color= geo, group=geo))+ geom_line(linewidth=1, aes(linetype = (geo == "EA19")))+ guides(linetype = "none")+ scale_y_continuous(expand=c(0,0), limits=as.numeric(c(5,10)), breaks=seq(from=5, to=10, by=1)) + scale_x_date(expand=c(0,0), breaks = seq(from = as.Date("2019-12-01"), to = max(taxa_atur$time, na.rm = TRUE), by = "2 months"), labels=date_format("%b %y"), limits = c(as.Date("2019-12-01"), max(taxa_atur$time, na.rm = TRUE)))
关键修改点
- 将
scale_x_date中breaks参数的to值,从固定的as.Date("2022-06-01")替换为max(taxa_atur$time, na.rm = TRUE),让刻度自动延伸到最新日期 - 同步把
limits参数的结束值也改成max(taxa_atur$time, na.rm = TRUE),确保x轴范围覆盖全部数据 - 添加
na.rm = TRUE是为了避免数据中存在缺失日期时出现报错
补充说明
如果你的time列是按月记录的,这个修改会自动识别最新月份并调整图表范围,无需每次手动修改日期。
内容的提问来源于stack exchange,提问作者Maria
相关产品推荐
相关产品推荐

