调整ggplot中geom_ribbon等图层顺序,实现预期可视化效果
调整ggplot图层顺序实现预期效果
ggplot的图层渲染逻辑是按代码书写顺序叠加——先写的图层在最底层,后写的图层依次覆盖在上方。你当前的代码把geom_ribbon放在最后,导致它覆盖在了点和回归直线上面,所以看不到预期的层级效果。
只需要调整图层顺序,把geom_ribbon放在最开头,接着是回归直线geom_line,最后放数据点geom_point,就能实现「丝带在最底层、直线中间、点在最上层」的效果:
Rosy <- data.frame( times = c(15, 11, 9, 12, 5, 2, 3), day = 1:7, yhat = c(14.36, 12.29, 10.21, 8.14, 6.07, 4.00, 1.93), lwr = c( 9.54, 8.5, 7.22, 5.47, 3.08, 0.22, -2.89), upr = c(19.18, 16.07, 13.2, 10.82, 9.06, 7.78, 6.75)) ggplot(data = Rosy, aes(x=day)) + geom_ribbon( aes(ymin=lwr, ymax=upr), fill='salmon') + geom_line( aes(y=yhat)) + geom_point(aes(y=times))
如果觉得丝带的填充色太厚重,还可以给geom_ribbon加上alpha参数调整透明度(比如alpha=0.3),让下方的直线显示得更清晰:
ggplot(data = Rosy, aes(x=day)) + geom_ribbon( aes(ymin=lwr, ymax=upr), fill='salmon', alpha=0.3) + geom_line( aes(y=yhat)) + geom_point(aes(y=times))
内容的提问来源于stack exchange,提问作者khali-blinks
相关产品推荐
相关产品推荐

