ggplot X轴截断问题:如何限制geom_smooth曲线在指定日期区间
解决geom_smooth曲线超出数据日期范围的问题
geom_smooth默认会基于拟合模型预测少量超出数据原始范围的区间,这就是你的曲线延伸到2011年和2022年的原因。以下两种方法可以让曲线严格起止于2012年1月1日至2021年12月31日:
方式1:通过geom_smooth参数限制曲线拟合范围
plot1 <- lmic.clean7 %>% group_by(pubyear, Income) %>% dplyr::mutate(count = n()) %>% select(pubyear, Income, count) plot1$pubyear <- as.Date(plot1$pubyear, format = "%Y") g2 <- ggplot(plot1, aes(x = pubyear, y = count, colour = Income)) + geom_smooth(fullrange = FALSE) + # 仅在实际数据的x区间内拟合曲线 xlim(as.Date("2012-01-01"), as.Date("2021-12-31")) # 固定x轴显示区间
方式2:用coord_cartesian限定坐标轴显示范围(更推荐)
plot1 <- lmic.clean7 %>% group_by(pubyear, Income) %>% dplyr::mutate(count = n()) %>% select(pubyear, Income, count) plot1$pubyear <- as.Date(plot1$pubyear, format = "%Y") g2 <- ggplot(plot1, aes(x = pubyear, y = count, colour = Income)) + geom_smooth() + coord_cartesian(xlim = c(as.Date("2012-01-01"), as.Date("2021-12-31")))
说明
fullrange = FALSE:强制geom_smooth只在数据存在的x范围内生成拟合曲线,不会向外延伸预测。coord_cartesian():和xlim()不同,它不会过滤数据,只是将图表显示的x轴范围锁定在指定区间,曲线会被截断在此范围内,适合需要保留全部数据但仅展示特定区间的场景。
内容的提问来源于stack exchange,提问作者aml129
相关产品推荐
相关产品推荐

