ggplot中scale_x_date的limits参数无法限制日期在数据框范围
解决ggplot2中scale_x_date限制日期范围的问题
没问题,完全可以用scale_x_date精准限制你的X轴日期范围,根本不需要放弃日期功能~
为什么你的原代码没生效?
你之前的代码里,scale_x_date的limits参数其实已经生效了,但ggplot2默认会给坐标轴两端添加一小段扩展空间(expand参数默认值是c(0.05, 0)),所以看起来还是会显示2017年11月底或2018年2月初的额外日期。只要去掉这个默认扩展,就能严格贴合你设置的日期范围。
修改后的代码
# 你的原始数据框 df <- data.frame(date=as.Date(c("2017-12-01", "2018-01-01", "2018-02-01")), value=c(1, 2, 3)) library(ggplot2) ggplot(data=df, aes(x=date, y=value)) + geom_line() + scale_x_date( date_breaks = "month", # 结合你的数据频率,改成每月刻度更合理 limits = c(min(df$date), max(df$date)), expand = c(0, 0) # 关键:移除轴两端的默认扩展空间 ) + theme(axis.text.x=element_text(angle=90, vjust = 0.5))
额外说明
如果你坚持想要保留date_breaks = "day"的设置,也完全可以——只是X轴会显示每天的刻度(看起来会比较拥挤),但加上expand = c(0,0)后,X轴的两端依然会严格限制在2017-12-01到2018-02-01,不会出现你提到的额外日期。
内容的提问来源于stack exchange,提问作者Nils
相关产品推荐
相关产品推荐

