[英]Why is fullrange=TRUE not working for geom_smooth in ggplot2?
[英]ggplot2: geom_smooth confidence band does not extend to edge of graph, even with fullrange=TRUE
你可能需要添加coord_cartesian
除了scale_x/y_continuous
。 scale_x/y_continuous
会删除图形范围之外的点,但是coord_cartesian
会覆盖它并使用所有数据,即使其中一些数据在图形中不可见。 在图中,红色点的置信带在带的顶部超过图形的y范围时结束。
在图形的扩展范围内没有实际的“数据”,但是geom_smooth
生成置信带而生成的点视为“数据”,以决定要绘制的内容。
看下面的例子。 第一个图仅使用scale_x/y_continuous
。 第二个添加了coord_cartesian
,但是请注意,仍未绘制置信带。 在第三coord_cartesian
图中,我们仍然使用coord_cartesian
,但是我们向下扩展了scale_y_continuous
范围,以便将置信带中低于零的点包括在y范围中。 但是, coord_cartesian
决定了实际绘制的范围,也防止了超出范围的点被排除。
我实际上发现这种行为令人困惑。 我本以为您可以只将coord_cartesian
与所需的x和y范围一起使用,并且仍然将置信带和回归线绘制到图形的边缘。 无论如何,希望这能为您提供所需的东西。
p1 = ggplot(mtcars, aes(wt, mpg, colour=factor(am))) +
geom_smooth(fullrange=TRUE, method="lm") +
scale_x_continuous(expand=c(0,0), limits=c(0,10)) +
scale_y_continuous(expand=c(0,0), limits=c(0,100)) +
ggtitle("scale_x/y_continuous")
p2 = ggplot(mtcars, aes(wt, mpg, colour=factor(am))) +
geom_smooth(fullrange=TRUE, method="lm") +
scale_x_continuous(expand=c(0,0), limits=c(0,10)) +
scale_y_continuous(expand=c(0,0), limits=c(0,100)) +
coord_cartesian(xlim=c(0,10), ylim=c(0,100)) +
ggtitle("Add coord_cartesian; same y-range")
p3 = ggplot(mtcars, aes(wt, mpg, colour=factor(am))) +
geom_smooth(fullrange=TRUE, method="lm") +
scale_x_continuous(expand=c(0,0), limits=c(0,10)) +
scale_y_continuous(expand=c(0,0), limits=c(-50,100)) +
coord_cartesian(xlim=c(0,10), ylim=c(0,100)) +
ggtitle("Add coord_cartesian; expanded y-range")
gridExtra::grid.arrange(p1, p2, p3)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.