R ggplot2多个几何图形的z顺序(背景到前景)

R ggplot2多个几何图形的z顺序(背景到前景),r,ggplot2,R,Ggplot2,我正在尝试使用ggplot2、are的geom_功能区和geom_线绘制多条带周围区域的线。这些值是重叠的,但我希望每个功能区/线条组合都是底部或顶部的组合 下面是一个可复制的示例: library(ggplot2) x <- 1:10 y <- c(1+x/100, 2-x, .1*x^2) data <- data.frame(x=rep(x,3), y=y, lower=y-1, upper=y+1, color=rep(c('green', 'blue', 'yello

我正在尝试使用ggplot2、are的geom_功能区和geom_线绘制多条带周围区域的线。这些值是重叠的,但我希望每个功能区/线条组合都是底部或顶部的组合

下面是一个可复制的示例:

library(ggplot2)
x <- 1:10
y <- c(1+x/100, 2-x, .1*x^2)
data <- data.frame(x=rep(x,3), y=y, lower=y-1, upper=y+1, color=rep(c('green', 'blue', 'yellow'), each=10))

但是当我保持它的简单和我们这个代码

plot <- ggplot(data=data) +
  geom_ribbon(aes(x=x, ymin=lower, ymax=upper, fill=paste0('light',color))) +
  geom_line(aes(x=x, y=y, col=color)) +
  scale_color_identity() +
  scale_fill_identity()

plot您可以使用循环保存一些键入内容

 ggplot(data=data) +
   purrr::map(.x = split(data, f = data$color),  
              .f = function(d){
     list(geom_ribbon(data=d,aes(x=x, ymin=lower, ymax=upper), fill=paste0('light',unique(d$color))), 
       geom_line(data=d,aes(x=x, y=y), col=unique(d$color)))
   }) 

我认为如果不写一个结合了色带和线条的新几何图形,这是不可能的
 ggplot(data=data) +
   purrr::map(.x = split(data, f = data$color),  
              .f = function(d){
     list(geom_ribbon(data=d,aes(x=x, ymin=lower, ymax=upper), fill=paste0('light',unique(d$color))), 
       geom_line(data=d,aes(x=x, y=y), col=unique(d$color)))
   })