3

我一直在从多个 data.frames 中绘制;

ggplot() +
     geom_line(data=posterior.m, aes(x=time,y=NO.y)) + 
     geom_line(data=posterior.05, aes(x=time,y=NO.y), linetype = "dotted") +
     geom_line(data=posterior.95, aes(x=time,y=NO.y), linetype = "dotted")

基本上,后验.m 包含 90% 置信区间的中位数。低 05 在数据框后验 05 中,高 95 在后验 95 中。简而言之,这是一个有 3 行的情节。

问题是,我如何geom_ribbon()通过在中位数和下限以及中位数和上限之间填充来使用或类似的东西。或者只是在上下之间填充。我无法让它工作,因为它们不是同一个数据框的一部分。

谢谢

4

1 回答 1

2

使用mtcars作为示例数据集,可以这样实现:

在您的情况下,您必须加入time并可能重命名您的变量。

library(dplyr)
library(ggplot2)

mtcars1 <- mtcars %>% 
  group_by(cyl) %>% 
  summarise(y_med = median(mpg))
#> `summarise()` ungrouping output (override with `.groups` argument)

mtcars2 <- mtcars %>% 
  group_by(cyl) %>% 
  summarise(y_05 = quantile(mpg, probs = .05))
#> `summarise()` ungrouping output (override with `.groups` argument)

mtcars3 <- mtcars %>% 
  group_by(cyl) %>% 
  summarise(y_95 = quantile(mpg, probs = .95))
#> `summarise()` ungrouping output (override with `.groups` argument)

mtcars_join <- left_join(mtcars1, mtcars2, by = "cyl") %>% 
  left_join(mtcars3, by = "cyl")

ggplot(mtcars_join, aes(cyl)) +
  geom_ribbon(aes(ymin = y_med, ymax = y_95), fill = "red") +
  geom_ribbon(aes(ymin = y_05, ymax = y_med), fill = "blue") +
  geom_line(aes(y = y_med)) +
  geom_line(aes(y = y_05), linetype = "dotted") +
  geom_line(aes(y = y_95), linetype = "dotted")

reprex 包(v0.3.0)于 2020-06-14 创建

于 2020-06-14T13:10:23.983 回答