繁体   English   中英

ggplot2:geom_smooth置信带不会延伸到图的边缘,即使fullrange = TRUE

[英]ggplot2: geom_smooth confidence band does not extend to edge of graph, even with fullrange=TRUE

我一直在ggplot2中生成一些散点图,发现我的geom_smooth se阴影(与stat_smooth完全相同的问题)不会扩展我的图的整个范围(请参见图)。

从代码中可以看到,我使用了“ fullrange = TRUE”,它确实扩展了线条本身(以及其他拟合线的se阴影),但是由于某种原因,使我的拟合线之一的阴影受阻。

它与图的上边界冲突似乎是一个问题。 如果我将范围扩大到直线到达右侧边界的位置,阴影会继续存在,但是这不是一个选择,因为我必须将x和y轴范围加倍才能做到这一点,数据。

有谁知道如何使阴影一直延伸到上轴边界?

产生剧情的代码

在此处输入图片说明

你可能需要添加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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM