R ggplot2 - 来自第三个连续变量的渐变颜色的geom_smooth

时间:2017-04-23 03:57:00

标签: r ggplot2

有没有办法绘制平滑曲线(x = var1,y = var2)并相对于第三个连续变量(z = var3)对其进行着色?我使用以下代码:

    library(ggplot2)

    x = runif(100,-20,20)
    y = 2*x+x^2+rnorm(100,0,50)
    z = 0.5*x+rnorm(100,0,2)
    df = data.frame(x=x,y=y,z=z)

    ggplot(data=df,aes(x=x,y=y))+geom_smooth(method='loess', aes(color=z),se=F) 

然而,平滑线仍然是纯蓝色。

使用内部变量" .. y .."而不是var3颜色相对于var2的颜色。

    ggplot(data=df,aes(x=x,y=y))+geom_smooth(method='loess', aes(color=..y..),se=F) 

是否有另一个内部变量要调用以便为var3?

着色

我能够使用geom_line生成所需的地块,但我想让它平滑。

1 个答案:

答案 0 :(得分:1)

您使用geom_line走在正确的轨道上,您只需要在预平滑数据上使用它。按照上面的数据帧,然后:

df$predict <- predict(loess(y~x, data = df))

ggplot(df, aes(x = x,y = predict)) +
  geom_line(aes(colour = z)) 

如果您的x存在较大差距,则可能会产生难看的结果;它们会在点之间呈现出平坦的部分。通过向newdata=提供predict()并将其存储在第二个数据框中,可以解决这个问题,但是您还需要为新的z值重新计算x

enter image description here