R中ggplot中两条线之间的颜色区域?

Ele*_*ino 1 r ggplot2

这里和这里已经提出了类似的问题,但我似乎无法让它们适用于我的示例。如果我有一个看起来像这样的情节:

library(ggplot2)
set.seed(100)
x <- seq(0, 20, length.out=1000)
x1 <- seq(0, 18, length.out=1000)
x2 <- seq(0, 22, length.out=1000)
dat <- data.frame(x=x, 
                  px = dexp(x, rate=0.5),
                  pxHi = dexp(x1, rate=0.5),
                  pxLo = dexp(x2, rate=0.5)
                  )

ggplot(dat, aes(x=x, y=px)) + 
  geom_line() +
  geom_line(aes(x= x, y = pxHi), col = 'red') +
  geom_line(aes(x= x, y = pxLo), col = 'blue') + theme_bw()
Run Code Online (Sandbox Code Playgroud)

示例图

我试图在红线和蓝线之间进行着色。我尝试使用geom_ribbon,但似乎无法让它正常工作。

关于我如何做到这一点有什么建议吗?

Jas*_*lns 5

正如您所指出的,您确实想要geom_ribbon:

library(ggplot2)
set.seed(100)
x <- seq(0, 20, length.out=1000)
x1 <- seq(0, 18, length.out=1000)
x2 <- seq(0, 22, length.out=1000)
dat <- data.frame(x=x, 
                  px = dexp(x, rate=0.5),
                  pxHi = dexp(x1, rate=0.5),
                  pxLo = dexp(x2, rate=0.5)
)

ggplot(dat, aes(x=x, y=px)) + 
  geom_ribbon(aes(x = x, ymax = pxHi, ymin = pxLo), fill = "pink") +
  geom_line() +
  geom_line(aes(x= x, y = pxHi), col = 'red') +
  geom_line(aes(x= x, y = pxLo), col = 'blue') + theme_bw()
Run Code Online (Sandbox Code Playgroud)

图形