【发布时间】:2017-04-23 03:56:59
【问题描述】:
有没有办法绘制平滑曲线 (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 生成所需的图,但我希望将其平滑。
【问题讨论】:
-
请make your example reproducible添加一些数据。
-
您可以用不同的颜色绘制各个数据点,但
geom_smooth怎么知道如何为曲线的哪一部分着色? -
您提供的信息很少,但试试这个:
aes(color=factor(var3))。如果这对您的数据集有正确的含义,我们无法判断。 -
geom_smooth没有直接连接到var3所以不,您不能以这种方式执行此操作。但是,您可以在df中创建一个额外的列,并在将var3映射到颜色时使用geom_line进行绘图。