在使用美学和 geom _ text 时从图例中删除‘ a’

我怎样才能从这个代码生成的图例中删除字母‘ 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))
54068 次浏览

geom_text中设置 show.legend = FALSE:

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

参数 show_guideggplot2 2.0.0(请看新闻稿)中将名称更改为 show.legend


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)

enter image description here

我有 类似的问题。西蒙的解决方案对我有效,但是需要稍微改变一下。我没有意识到我需要用 “ show _ guide = F”来替换 geom _ text 的参数,而不是用它来替换现有的参数——这正是 Simon 的解决方案所显示的。对于像我这样的新手来说,这并不明显。一个正确的示例应该使用 OP 的代码,并像下面这样添加缺少的参数:

..
geom_text(aes(label=Species), show_guide = F) +
..

就像尼克说的

下面的代码仍然会产生错误:

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

enter image description here

而:

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

在 Aes 参数之外消除了传说上的 a

enter image description here

我们可以用 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 软件包于2019-04-29创作(0.2.1)

您还可以在 geom_label_repel()的参数中使用 show.legend = FALSE来删除图例中的“ 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  )

我也遇到过类似的问题,在我试图用 geom_text_repel标记的不同颜色点后面出现了一个“ a”。为了删除“ a”,这样它就只显示了后面没有“ a”的点,我必须在 geom_text_repel中添加 show.legend=FALSE作为参数。

希望这对任何可能正在为同样的问题而苦恼的人来说都是有意义的!