在ggplot2中,从here获取的以下命令p <- qplot(wt, mpg, data=mtcars, colour=factor(cyl))
绘制散点图,每个点根据因子着色
我想用geom_smooth来拟合所有数据而不考虑因素,但是根据因子保持各个点的颜色。 p + geom_smooth(method="lm")
对每个因素进行线性拟合。我该怎么做?
答案 0 :(得分:24)
你可以通过退回'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))
答案 1 :(得分:7)
在我看来,如果您开始使用ggplot
功能而不是ggplot()
,您会发现qplot
更容易。对美学的控制更有意义。在这种情况下,您只需构建基础:
p <- ggplot(mtcars, aes(wt, mpg))
然后在顶部构建两个geom
:
p + geom_point(aes(colour = factor(cyl))) +
geom_smooth(method = "lm")
如果那不是您想要的,请告诉我。
答案 2 :(得分:2)
我同意@alexwhan和@Dinre之前的答案,即ggplot()+ geom_point(...)+ ...是解决此问题的最佳方法
但是,如果您只想修改解决方案,请尝试
p + geom_smooth(method = 'lm', aes(colour = NA), colour = 'magenta')