绘制多条线并在这些线上添加总体置信带

时间:2019-02-26 13:36:57

标签: r ggplot2

test_data <-
  data.frame(
    var0 = 100 + c(0, cumsum(runif(49, -20, 20))),
    var1 = 150 + c(0, cumsum(runif(49, -10, 10))),
    var2 = 250 + c(0, cumsum(runif(49, -10, 10)))
  )

鉴于以上测试数据,我想执行以下操作:

(1)绘制类似于以下内容的线:Plotting two variables as lines using ggplot2 on the same graph

(2)为这些线添加总体置信带(线可以看作点),类似于:Find points over and under the confidence interval when using geom_stat / geom_smooth in ggplot2

我知道如何分别处理它们,但不确定如何将它们组合在一个图中。

1 个答案:

答案 0 :(得分:0)

this post中,您可以检查答案之一是使用geom_ribbon而不是geom_line。这应该回答(2)。关于(1),可以按照您在提到的链接中所说的相同方法进行绘制。

让我们假设您想将var0保持在x轴上,并相对于var1和var2作图。

为此,您必须先收集var1和var2

test_data <-
  data.frame(
    var0 = 100 + c(0, cumsum(runif(49, -20, 20))),
    var1 = 150 + c(0, cumsum(runif(49, -10, 10))),
    var2 = 250 + c(0, cumsum(runif(49, -10, 10)))
  ) %>%
  gather(key="var",value="value",var1:var2)

结果如下:

> head(test_data)
       var0  var    value
1 100.00000 var1 150.0000
2  85.67636 var1 146.4407
3  76.86862 var1 151.6061
4  79.46151 var1 143.6943
5  96.86709 var1 147.8999
6  91.20310 var1 157.2294

现在,要进行相应的绘图,您必须按新的组变量“ var”(包含组“ var1”和“ var2”的名称)进行绘图,并为上下限绘制功能区geom_ribbon ,并进行geom_line调用以绘制实际线条。

test_data %>%
  ggplot(aes(x=var0,y=value,group=var)) +
  geom_ribbon(aes(ymin=value*0.95,ymax=value*1.05),fill="grey70") +
  geom_line()

这将产生:

Plot