geom_smooth 中的 colour="black" 用 R gglplot2 改变 lm 线。为什么?

Ale*_*era 3 r ggplot2

我的例子是用简单的可用数据制作的:

data(Salaries, package="car")
library(tidyverse)
Run Code Online (Sandbox Code Playgroud)

运行时:

ggplot(Salaries, aes(x=yrs.since.phd, y=salary, color=rank))+
geom_point() +
geom_smooth(method="lm", size=0.5)+
facet_grid(~sex)
Run Code Online (Sandbox Code Playgroud)

我得到了这张图,它为每个等级创建了一条 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)
Run Code Online (Sandbox Code Playgroud)

该图现在显示所有数据的唯一 lm 线:

在此处输入图片说明

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

tif*_*ifu 8

发生这种情况是因为通过color在 中指定geom_smooth,您将覆盖代码顶行中设置的美观性。如果您希望所有组的线条都是黑色的,您可以group按geom_smooth以下方式使用 -aesthetic:

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)    
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Koe*_*enV 5

美学在每一层中重新使用:从 help(aes)

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

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

你可以通过使用fillandshape=21和 using colorfor the line 来解决这个问题:

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)
Run Code Online (Sandbox Code Playgroud)

添加se=FALSE到调用geom_smooth将删除彩色标准错误间隔。

产生这个情节:

在此处输入图片说明