我想在ggplot2中使用geom_ribbon来绘制阴影的置信范围。但是,如果其中一条线超出了设定的y限制,则色带将被切断而不会延伸到图的边缘。

最小的例子

x <- 0:100
y1 <- 10+x
y2 <- 50-x

ggplot() + theme_bw() +
  scale_x_continuous(name = "x", limits = c(0,100)) +
  scale_y_continuous(name = "y", limits = c(-20,100)) +
  geom_ribbon(aes(x=x, ymin=y2-20, ymax=y2+20), alpha=0.2, fill="#009292") +
  geom_line(aes(x=x , y=y1)) +
  geom_line(aes(x=x , y=y2))


r - ggplot色带在y极限处切断-LMLPHP

我想要的是重现与在底面R中绘制相同的行为,其中底纹延伸到边缘

plot(x, y1, type="l", xlim=c(0,100),ylim=c(-20,100))
lines(x,y2)
polygon(c(x,rev(x)), c(y2-20,rev(y2+20)), col="#00929233", border=NA)


r - ggplot色带在y极限处切断-LMLPHP

最佳答案

问题在于limits正在删除不在其范围内的所有数据。
您想要的是先绘制然后放大。这可以通过使用coord_cartesian来完成。

ggplot() + theme_bw() +
  geom_ribbon(aes(x = x, ymin = y2 - 20, ymax = y2 + 20), alpha = 0.2, fill = "#009292") +
  geom_line(aes(x = x, y = y1)) +
  geom_line(aes(x = x, y = y2)) +
  coord_cartesian(ylim = c(-25, 100), xlim = c(0,100))


r - ggplot色带在y极限处切断-LMLPHP

关于r - ggplot色带在y极限处切断,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38777337/

10-11 08:37