【发布时间】:2019-02-14 09:51:43
【问题描述】:
我正在尝试修复一个图例,以免ggplot 中的geom_vline 引起交叉。
我知道我的示例作为情节没有多大意义,但只是想要一个快速可重现的示例。
library(ggplot2)
ggplot(diamonds)+
geom_point(aes(x = carat, y = depth, colour = "depth"), pch = 4)+
geom_line(aes(x = carat, y = table, colour = "table"))+
geom_vline(aes(xintercept = 2, colour = "x = 2"))+
guides(colour = guide_legend(override.aes = list(linetype=c(0,1,1), shape=c(4,NA,NA))))
我知道我可以使用guide_legend(override.aes = …) 来解决每个图例项上都出现点和线的问题,但这似乎无法删除由geom_vline() 创建的垂直线
我发现几个问题正在寻找解决方案(如下),但它们似乎都通过使用不同的 aes(线型或使用填充的颜色)分隔 vline 来解决它。有没有办法可以保留colour aes 但我的传奇不会像这样?
R - combined geom_vline and geom_smooth in legend
【问题讨论】:
-
我不确定你想用颜色实现什么。您使用
aes映射到depth和table变量,但随后将这些变量名称放在引号中,这不会映射到变量,而是赋予它们离散的颜色。 -
只想指出,geom_linerange 也会出现此图例交叉问题。为 geom_linerange 设置 'show.legend=F' 并保持其他几何图例可见也对我有用。