R编程:如何创建自定义拟合曲线?

时间:2015-08-17 17:23:55

标签: r

我想创建一个看起来像这样的图表,但是使用我自己的数据作为灰色拟合线的最小值/最大值 enter image description here

这是一个简单的情节。

df <- data.frame(x1 = c(0,1,2,3,4),
                 y1 = c(2,3,4,5,6),
                 x2 = c(0,1,2,3,4),
                 y2 = c(3,4,6,7,8),
                 x3 = c(0,1,2,3,4),
                 y3 = c(0,0,1,2.5,2))

g <- ggplot(data=df) +
  geom_line(aes(x1,y1,color="red")) + 
  geom_line(aes(x2,y2)) +
  geom_line(aes(x3,y3))

enter image description here

我希望像示例中的透明灰色填充区域位于红线后面和2条黑线之间。我该如何做到这一点?

1 个答案:

答案 0 :(得分:2)

您可以使用多边形功能。

x <- 1:50
y_low <- rnorm(length(x), 150, 25) + 5*x
y_high <- rnorm(length(x), 250, 25) + 5*x

plot(x, y_high, type='l', ylim = c(000, 600))    
polygon(c(x, rev(x)), c(y_high, rev(y_low)), col = "grey40")

enter image description here

另一个选项(如评论中所述)是添加geom_ribbon属性。您可以为间隔指定客户值。以下完成了工作:

g <- ggplot(data=df) + geom_ribbon(aes(x=x1, ymin=y2, ymax=y3)) 
   + geom_line(aes(x1,y1,color="red")) 
   + geom_line(aes(x2,y2)) + geom_line(aes(x3,y3))

enter image description here