p <- qplot(wt, mpg, data=mtcars, colour=factor(cyl))
在 ggplot2 中,从此处获取的以下命令绘制散点图,每个点根据因子着色
我想用 geom_smooth 拟合所有数据,而不考虑因素,但根据因素保持各个点的颜色。p + geom_smooth(method="lm")
对每个因素进行线性拟合。我该怎么做呢?
您可以通过退出“qplot”包装函数并直接使用“ggplot”和几何函数来相当容易地做到这一点。
ggplot(mtcars, aes(x=wt, y=mpg)) +
geom_point(aes(colour=factor(cyl))) +
geom_smooth(method="lm")
第 1 步:设置您的初始“ggplot”设置。这些是您希望作为几何函数默认值的设置。
ggplot(mtcars, aes(x=wt, y=mpg))
在这种情况下,我们将“mtcars”数据用于所有几何图形,“wt”分配给 x 轴,“mpg”分配给 y 轴。通过在开始时指定这些,我们减少了在复制粘贴到几何函数时搞砸的风险。
第 2 步:绘制点几何图形,使用“cyl”因子为点着色。这就是最初的 'qplot' 函数所做的,但我们更明确地指定了它。
geom_point(aes(colour=factor(cyl)))
第 3 步:绘制平滑线性模型。这正是 OP 之前写的,但现在着色的美感不再是默认设置的一部分,模型按预期绘制。
geom_smooth(method="lm")
+
将它与et voila链接在一起!
供参考:您可以通过在每一层中明确来轻松地做到这一点,如下所示:
ggplot() +
geom_point(data=mtcars, aes(x=wt, y=mpg, colour=factor(cyl))) +
geom_smooth(data=mtcars, method="lm", aes(x=wt, y=mpg))
在我看来,ggplot
如果你开始使用ggplot()
函数而不是qplot
. 美学的控制更有意义。在这种情况下,您只需构建您的基础:
p <- ggplot(mtcars, aes(wt, mpg))
然后在上面构建两个geom
s:
p + geom_point(aes(colour = factor(cyl))) +
geom_smooth(method = "lm")
如果那不是你想要的,请告诉我。
我同意@alexwhan 和@Dinre 先前的回答,即 ggplot() + geom_point(...) + ... 是解决这个问题的最佳方法
但是,如果您只想修改解决方案,请尝试
p + geom_smooth(method = 'lm', aes(colour = NA), colour = 'magenta')