geom_smooth不跨越整个数据范围

时间:2017-05-16 15:20:22

标签: r ggplot2

以下代码绘制了平滑线。但似乎没有跨越整个数据范围。我做错了吗?

ggplot(mpg, aes(year, cty)) + geom_jitter() + geom_smooth(method = "lm", se = TRUE, span=3, fullrange=TRUE)

它给了我:

enter image description here

1 个答案:

答案 0 :(得分:6)

您的问题出在geom_jitter。查看它显示的mpg数据集只有两年,1999年和2008年。geom_jitter使得范围看起来比它宽得多,但是geom_smooth只绘制一条线数据范围。例如,使用

ggplot(mpg, aes(year, cty)) + geom_point() + geom_smooth(method = "lm", se = TRUE, span=3, fullrange=TRUE)

给我们一个这样的情节

enter image description here

geom_jitter不仅会抖动y值(cty),还会抖动x值(年份),这使得数据的日期范围看起来比实际更宽。由于geom_smooth仅在范围内插值,因此它不会像您想要的那样跨越整个图。