Rimuovi "a" dalla legenda quando usi l'estetica e geom_text


124

Come posso rimuovere la lettera "a" dalla legenda generata da questo codice? Se rimuovo il geom_text, la lettera "a" non verrà visualizzata nella legenda. Voglio mantenere geom_text, però.

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

Risposte:


142

Situato show.legend = FALSEin 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)

L'argomento ha show_guidecambiato nome in show.legendin ggplot2 2.0.0( vedi notizie di rilascio ).


Pre- ggplot2 2.0.0:

Con show_guide = FALSEcosì così ...

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 )

inserisci qui la descrizione dell'immagine


3
Impostazione show.legenda FALSEin ggplot23.2.1 rimuoverà la leggenda del tutto!
NelsonGon

14

Ho avuto un problema simile . La soluzione di Simon ha funzionato per me, ma è stata necessaria una leggera svolta. Non mi rendevo conto di dover aggiungere "show_guide = F" agli argomenti di geom_text, piuttosto che sostituire con esso gli argomenti esistenti - che è ciò che mostra la soluzione di Simon. Per un noob ggplot2 come me questo non era così ovvio. Un esempio corretto avrebbe utilizzato il codice dell'OP e aggiunto semplicemente l'argomento mancante in questo modo:

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

9

Come ha detto Nick

il codice seguente produrrebbe comunque l'errore:

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

inserisci qui la descrizione dell'immagine

mentre:

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

al di fuori dell'argomento aes elimina la a sulla legenda

inserisci qui la descrizione dell'immagine


C'è un modo per personalizzare la "a" con qualcos'altro come "r"?
asalimih

8

Possiamo usare guide_legend(override.aes = aes(...))per nascondere la "a" nella legenda.

Di seguito è riportato un breve esempio di come potresti utilizzare 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 = "")
  )
)

Creato il 29-04-2019 dal pacchetto reprex (v0.2.1)


Penso che questa sia una soluzione migliore di quella accettata, in quanto consente di rimuovere specificamente la lettera "a" dalla legenda, mentre altre estetiche possono, se lo si desidera, rimanere inalterate.
Markel

1

È inoltre possibile utilizzare show.legend = FALSEnegli argomenti di geom_label_repel()per rimuovere la "a" nella legenda. Quindi, invece di

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

tu puoi fare,

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

Ho avuto un problema simile, con una "a" che appare dietro diversi punti colorati con cui stavo cercando di etichettare geom_text_repel. Per rimuovere la "a", in modo che mostrasse semplicemente il punto senza la "a" dietro, ho dovuto aggiungere show.legend=FALSEcome argomento in geom_text_repel.

Spero che abbia senso per chiunque stia lavorando con lo stesso problema!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.