Remova 'a' da legenda ao usar estética e geom_text


124

Como posso remover a letra 'a' da legenda gerada por este código? Se eu remover o geom_text, a letra 'a' não aparecerá na legenda. Eu quero manter geom_text, no entanto.

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

Respostas:


142

Situado show.legend = FALSEem geom_text:

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

O argumento show_guidemudou o nome para show.legendin ggplot2 2.0.0( consulte as notícias do release ).


Pré- ggplot2 2.0.0:

Com show_guide = FALSEassim ...

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 )

insira a descrição da imagem aqui


3
Definir show.legenda FALSEem ggplot23.2.1 irá remover a legenda por completo!
NelsonGon

14

Eu tive um problema semelhante . A solução de Simon funcionou para mim, mas foi necessária uma ligeira reviravolta. Eu não sabia que precisava adicionar "show_guide = F" aos argumentos do geom_text, em vez de substituir os argumentos existentes - que é o que a solução de Simon mostra. Para um noob ggplot2 como eu, isso não era tão óbvio. Um exemplo adequado teria usado o código do OP e adicionado o argumento ausente como este:

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

9

Como Nick disse

o código a seguir ainda produziria o erro:

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

insira a descrição da imagem aqui

enquanto que:

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

fora do argumento aes elimina a um sobre a lenda

insira a descrição da imagem aqui


Existe alguma maneira de personalizar o 'a' para algo como 'r'?
asalimih 29/04

8

Podemos usar guide_legend(override.aes = aes(...))para ocultar o 'a' na legenda.

Abaixo está um pequeno exemplo de como você pode usar 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 = "")
  )
)

Criado em 2019-04-29 pelo pacote reprex (v0.2.1)


Penso que esta é uma solução melhor do que a aceita, pois permite remover especificamente a letra 'a' da lenda, enquanto outras estéticas podem, se desejado, permanecer intocadas.
Markel

1

Você também pode usar show.legend = FALSEnos argumentos de geom_label_repel()para remover o "a" na legenda. Então, ao invés de

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 = "")
  )
)

você pode fazer,

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

Eu tive um problema semelhante, com um 'a' aparecendo atrás de diferentes pontos coloridos que eu estava tentando rotular geom_text_repel. Para remover o 'a', para que ele mostrasse o ponto sem o 'a' por trás, tive que adicionar show.legend=FALSEcomo argumento geom_text_repel.

Espero que isso faça sentido para qualquer pessoa que esteja trabalhando com o mesmo problema!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.