【发布时间】:2019-05-16 00:19:31
【问题描述】:
我有一个带有连续 x 和 y 变量的图,第三个连续变量映射到“大小”美学,第四个离散变量映射到“形状”美学。如果我只指定geom_point(),则“大小”比例的图例会显示不同大小的子弹,这很好,但如果我还指定geom_smooth,则图例会在子弹上显示一条线,这不是我想要的。指定geom_smooth() 时,有没有办法在图例中只保留项目符号?
我尝试使用
guides(size=guide_legend(override.aes=list(shape="circle")))
但这没有用
这是一个 MRE:
df <- tibble(a=rnorm(100), b=rnorm(100), c=rnorm(100), d=rep(c("A", "B"), 50))
ggplot(df, aes(x=a, y=b, shape=d, size=c)) +
geom_point()
上面的代码为“size”生成了想要的图例。
我想要的是按组添加平滑线,具有不同的线型:
ggplot(df, aes(x=a, y=b, shape=d, size=c)) +
geom_point() +
geom_smooth(method="lm", aes(linetype=d), color="black")
大小图例现在有与项目符号重叠的线条。
当我添加geom_smooth() 时,我也希望得到第一个代码产生的图例。
【问题讨论】:
-
在您的
geom_smooth中添加show.legend = F将使其不会显示在任何图例中 -
谢谢,但我确实希望显示 geom_smooth 的图例,以便读者了解线条所属的组。