You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 01:35:18