首页 > 解决方案 > 绘制多条线并在这些线上添加整体置信带

问题描述

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) 绘制与此类似的线:在同一图表上使用 ggplot2 将两个变量绘制为线

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

我知道如何分开做,但不知道如何将它们组合在一个情节中。

标签: rggplot2

解决方案


这篇文章中,您可以检查其中一个答案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()

这产生:

阴谋


推荐阅读