使用美学和geom_text时,从图例中删除“ a”


124

如何从此代码生成的图例中删除字母“ 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))

Answers:


142

设置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  = F )

在此处输入图片说明


3
设置show.legendFALSEggplot23.2.1将完全消除传奇!
NelsonGon

14

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

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

9

就像尼克说的

以下代码仍会产生错误:

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

在此处输入图片说明

而:

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

在es参数之外消除了传说中的a

在此处输入图片说明


有什么办法可以将“ a”自定义为“ r”之类的东西吗?
asalimih

8

我们可以用来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-04-29


我认为这是一种比公认的更好的解决方案,因为它可以专门从图例中删除“ a”字母,而如果需要,其他美学可以保持不变。
Markel

1

您还可以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  )

0

我遇到了类似的问题,在我要标记的不同颜色点后面出现了一个“ a” geom_text_repel。要删除'a',以便仅显示该点而没有'a',我必须在中添加show.legend=FALSE作为参数geom_text_repel

希望这对任何可能正在研究相同问题的人都有意义!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.