166

如何从此代码生成的图例中删除字母“a”?如果我删除geom_text,那么 'a' 字母将不会显示在图例中。不过,我想保留geom_text

ggplot(data = iris, aes(x = Sepal.Length, y=Sepal.Width, 
                        shape = Species, colour = Species)) + 
   geom_point() + 
   geom_text(aes(label = Species))
4

6 回答 6

198

设置show.legend = FALSEgeom_text

ggplot(data = iris,
       aes(x = Sepal.Length, y = Sepal.Width, colour = Species,
           shape = Species, label = Species)) + 
    geom_point() +
    geom_text(show.legend = FALSE)

参数show_guide改名为show.legendin ggplot2 2.0.0见发布新闻)。


ggplot2 2.0.0

show_guide = FALSE这样...

ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width , colour = Species,
                        shape = Species, label = Species ), size = 20) + 
geom_point() +
geom_text(show_guide  = FALSE)

在此处输入图像描述

于 2013-08-20T14:46:40.407 回答
18

我们可以guide_legend(override.aes = aes(...))用来隐藏图例中的“a”。

下面是一个简短的示例,说明如何使用guide_legend()

library(ggrepel)
#> Loading required package: ggplot2

d <- mtcars[c(1:8),]

p <- ggplot(d, aes(wt, mpg)) +
  geom_point() +
  theme_classic(base_size = 18) +
  geom_label_repel(
    aes(label = rownames(d), fill = factor(cyl)),
    size = 5, color = "white"
  )

# Let's see what the default legend looks like.
p

# Now let's override some of the aesthetics:
p + guides(
  fill = guide_legend(
    title = "Legend Title",
    override.aes = aes(label = "")
  )
)

reprex 包(v0.2.1)于 2019 年 4 月 29 日创建

于 2019-04-29T19:29:32.450 回答
17

我有一个类似的问题。西蒙的解决方案对我有用,但需要稍微改变一下。我没有意识到我需要在 geom_text 的参数中添加“show_guide = F”,而不是用它替换现有的参数——这就是 Simon 的解决方案所显示的。对于像我这样的 ggplot2 菜鸟来说,这并不是那么明显。一个合适的例子会使用 OP 的代码并添加缺少的参数,如下所示:

..
geom_text(aes(label=Species), show_guide = F) +
..
于 2015-02-10T22:31:25.383 回答
9

就像尼克说的

以下代码仍会产生错误:

geom_text(aes(x=1,y=2,label="",show_guide=F))

在此处输入图像描述

然而:

geom_text(aes(x=1,y=2,label=""),show_guide=F)

在 aes 论点之外消除了传说中的 a

在此处输入图像描述

于 2015-08-15T14:14:58.767 回答
4

您还可以show.legend = FALSE在参数中使用geom_label_repel()来删除图例中的“a”。所以,而不是

ggplot(d, aes(wt, mpg)) +
  geom_point() +
  theme_classic(base_size = 18) +
  geom_label_repel(
    aes(label = rownames(d), fill = factor(cyl)),
    size = 5, color = "white"
  )+ guides(
  fill = guide_legend(
    title = "Legend Title",
    override.aes = aes(label = "")
  )
)

你可以做,

ggplot(d, aes(wt, mpg)) +
  geom_point() +
  theme_classic(base_size = 18) +
  geom_label_repel(
    aes(label = rownames(d), fill = factor(cyl)),
    size = 5, color = "white",
    show.legend = FALSE  )
于 2020-03-17T21:07:43.003 回答
2

我有一个类似的问题,在我试图用 标记的不同颜色的点后面出现一个“a” geom_text_repel。要删除“a”,以便它只显示后面没有“a”的点,我必须show.legend=FALSEgeom_text_repel.

希望这对任何可能遇到同样问题的人都有意义!

于 2020-05-23T16:39:32.320 回答