R语言 使用美学和geom_text时从图例中删除'a'

fnatzsnv  于 2023-04-09  发布在  其他
关注(0)|答案(7)|浏览(312)

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

daolsyd01#

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.0see release news)中将名称更改为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)

4c8rllxm

4c8rllxm2#

我们可以使用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 = "")
  )
)

创建于2019-04-29由reprex package(v0.2.1)

mjqavswn

mjqavswn3#

我有一个similar problem。Simon的解决方案对我有效,但需要一个轻微的扭曲。我没有意识到我需要在geom_text的参数中添加**“show_guide = F”,而不是用它来替换现有的参数--这就是Simon的解决方案所展示的。对于像我这样的ggplot 2新手来说,这并不是那么明显。一个合适的例子应该使用OP'的代码,只是添加了缺少的参数,如下所示:

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

vnzz0bqm4#

就像尼克说的
下面的代码仍然会产生错误:

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

鉴于:

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

在aes参数之外消除图例上的a

1mrurvl1

1mrurvl15#

我遇到了类似的问题,在我试图用geom_text_repel标记的不同颜色的点后面出现了一个'a'。为了删除'a',以便它只显示后面没有'a'的点,我必须在geom_text_repel中添加show.legend=FALSE作为参数。
希望这对任何可能正在为同样的问题而努力的人都有意义!

nnt7mjpx

nnt7mjpx6#

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

nnvyjq4y7#

如果你只想让geom_text()可见,但为了图例的目的,你可以将alpha设置为0,使其不可见,但在辅助线中将其覆盖为1,以强制显示geom_point()

ggplot(data = iris, aes(x = Sepal.Length, y=Sepal.Width, 
                        shape = Species, colour = Species)) + 
  geom_point(alpha = 0) + 
  geom_text(aes(label = Species)) +
  guides(color = guide_legend(override.aes = aes(label = "", alpha = 1)))

相关问题