删除图例中由ggplot中的geom_vline引起的垂直线

时间:2018-09-10 00:34:04

标签: r ggplot2 aes legend

我正在尝试修正图例,以免.col-lg-*中的geom_vline造成交叉。 我知道我的示例作为情节并没有多大意义,而只是想要一个可快速复制的示例。

ggplot

我知道我可以使用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 = …)创建的垂直线

我发现了几个寻找解决方案的问题(如下),但它们似乎都可以通过使用不同的es(线型或使用填充的颜色)分隔vline来解决。有没有办法让geom_vline()保持aes但我的图例看起来不这样?

R - combined geom_vline and geom_smooth in legend

Legend showing an unexpected black line with geom_vline

enter image description here

1 个答案:

答案 0 :(得分:3)

对于本示例,这似乎可以解决。不确定您的实际数据。

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"), show.legend = F)+
  guides(colour = guide_legend(override.aes = list(linetype=c(0,1,1), shape=c(4,NA,NA))))

reprex package(v0.2.0)于2018-09-09创建。