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

Sar*_*rah 3 r aes legend ggplot2

我正在尝试修复图例,以便不存在由geom_vlinein引起的交叉ggplot。\n我知道我的示例作为情节没有多大意义,但只是想要一个快速可重现的示例。

\n\n
library(ggplot2)\nggplot(diamonds)+\n  geom_point(aes(x = carat, y = depth, colour = "depth"), pch = 4)+\n  geom_line(aes(x = carat, y = table, colour = "table"))+\n  geom_vline(aes(xintercept = 2, colour = "x = 2"))+\n  guides(colour = guide_legend(override.aes = list(linetype=c(0,1,1), shape=c(4,NA,NA))))\n
Run Code Online (Sandbox Code Playgroud)\n\n

我知道我可以用来guide_legend(override.aes = \xe2\x80\xa6)解决每个图例项上都出现的点和线的问题,但这似乎无法删除由geom_vline()

\n\n

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

\n\n

R - 图例中组合geom_vline和geom_smooth

\n\n

图例显示带有 geom_vline 的意外黑线

\n\n

在此输入图像描述

\n

And*_*dS. 6

这对于这个例子来说似乎是可行的。不确定你的实际数据。

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

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