首页 文章

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

提问于
浏览
1

有没有办法绘制平滑曲线(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 回答

  • 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() 并将其存储在第二个数据帧中,可以解决这个问题,但是您还需要为这些新的 x 值重新计算 z .

    enter image description here

相关问题