颜色=”;黑色“;在geom_中,使用R/PLOT2平滑更改lm线。为什么?

颜色=”;黑色“;在geom_中,使用R/PLOT2平滑更改lm线。为什么?,r,ggplot2,R,Ggplot2,我的例子是用容易获得的数据制作的: data(Salaries, package="car") library(tidyverse) 运行时: ggplot(Salaries, aes(x=yrs.since.phd, y=salary, color=rank))+ geom_point() + geom_smooth(method="lm", size=0.5)+ facet_grid(~sex) 我得到了这个图,它为每个等级创建了一条lm线: 但是当我使用 ggplot(Salarie

我的例子是用容易获得的数据制作的:

data(Salaries, package="car")
library(tidyverse)
运行时:

ggplot(Salaries, aes(x=yrs.since.phd, y=salary, color=rank))+
geom_point() +
geom_smooth(method="lm", size=0.5)+
facet_grid(~sex)
我得到了这个图,它为每个等级创建了一条lm线:

但是当我使用

ggplot(Salaries, aes(x=yrs.since.phd, y=salary, color=rank))+
geom_point() +
geom_smooth(method="lm", colour="black", size=0.5)+
facet_grid(~sex)
该图现在显示了所有数据的唯一lm线:


知道发生了什么吗?为什么设置color=“black”会改变图形中lm线的整体外观?

这是因为通过在
geom_smooth
中指定
color
,您正在覆盖代码顶行中设置的美学。如果希望所有组的线条均为黑色,可以按以下方式使用
geom_smooth
中的
group
-美学:

ggplot(Salaries, aes(x=yrs.since.phd, y=salary, color=rank))+
  geom_point() +
  geom_smooth(aes(group=rank), method="lm", color = "black", size=0.5)+
  facet_grid(~sex)    

美学在每一层中都被重复使用:从
帮助(aes)

提供给ggplot()的美学效果用作每个层的默认值。 可以覆盖它们,或为每个层提供不同的美学效果

当你把颜色定义为等级时,ggplot就是这么做的。在调用
geom_smooth
覆盖颜色设置(等级级别)时,ggplot会删除用于绘制线的等级

您可以通过使用
fill
shape=21
以及使用
color
来解决此问题,如下所示:

ggplot(Salaries, aes(x=yrs.since.phd, y=salary, fill=rank))+
  geom_point(shape=21) +
  geom_smooth(method="lm", 
              color="black",
              size=0.5)+
  facet_grid(~sex)
se=FALSE
添加到调用
geom_smooth
将删除彩色标准错误间隔

产生此图: