我的示例是使用简单的可用数据制作的:
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线的整体外观?
答案 0 :(得分:4)
美学在每一层都被重复使用:来自help(aes)
提供给ggplot()的美学被用作每一层的默认值。 您可以覆盖它们,或为每个图层提供不同的美学
当您将 color 定义为排名级别时,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
的调用中会丢弃彩色标准错误间隔。
产生这个情节:
答案 1 :(得分:3)