在ggplot2中,p <- qplot(wt, mpg, data=mtcars, colour=factor(cyl))从此处获取的以下命令绘制散点图,每个点根据因子着色
我想用geom_smooth来拟合所有数据而不考虑因素,但是根据因子保持各个点的颜色.p + geom_smooth(method="lm")在每个因素上线性拟合.我该怎么做呢?
Din*_*nre 24
您可以通过退回'qplot'包装函数并直接使用'ggplot'和几何函数来相当容易地完成此操作.
ggplot(mtcars, aes(x=wt, y=mpg)) +
geom_point(aes(colour=factor(cyl))) +
geom_smooth(method="lm")
Run Code Online (Sandbox Code Playgroud)

第1步:设置您的初始'ggplot'设置.这些是您希望为几何函数设置的默认设置.
ggplot(mtcars, aes(x=wt, y=mpg))
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我们对所有几何使用'mtcars'数据,其中'wt'分配给x轴,'mpg'分配给y轴.通过在开头指定这些,我们可以减少在复制粘贴到几何函数时弄乱某些东西的风险.
第2步:绘制点几何,使用'cyl'因子为点着色.这就是最初的'qplot'函数正在做的事情,但我们更明确地指定它.
geom_point(aes(colour=factor(cyl)))
Run Code Online (Sandbox Code Playgroud)
第3步:绘制平滑的线性模型.这正是OP之前所写的,但是现在着色的美学不再是默认的一部分,模型按照预期绘制.
geom_smooth(method="lm")
Run Code Online (Sandbox Code Playgroud)
将它们与+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))
Run Code Online (Sandbox Code Playgroud)
在我看来,ggplot如果你开始使用这个ggplot()功能,你会发现更容易qplot.对美学的控制更有意义.在这种情况下,您只需构建基础:
p <- ggplot(mtcars, aes(wt, mpg))
Run Code Online (Sandbox Code Playgroud)
然后geom在顶部构建两个:
p + geom_point(aes(colour = factor(cyl))) +
geom_smooth(method = "lm")
Run Code Online (Sandbox Code Playgroud)

如果那不是你想要的,请告诉我.