有没有办法绘制平滑曲线(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 回答
你使用
geom_line
就在正确的轨道上,你只需要在预平滑的数据上使用它 . 按上面的方式获取数据框,然后:如果
x
有很大差距,这会产生难看的结果;它们会在点之间呈现出平坦的部分 . 通过将newdata=
提供给predict()
并将其存储在第二个数据帧中,可以解决这个问题,但是您还需要为这些新的x
值重新计算z
.