我想在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中绘图相同的行为,其中着色延伸到边缘
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)
Ale*_*lex 19
问题是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))