Disattivazione di alcune leggende in un ggplot


221

Supponiamo che io abbia un ggplot con più di una legenda.

mov <- subset(movies, length != "")
(p0 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  geom_point()
)

Posso disattivare la visualizzazione di tutte le leggende in questo modo:

(p1 <- p0 + theme(legend.position = "none"))

Il passaggio show_guide = FALSEa geom_point(come da questa domanda ) disattiva la legenda delle forme.

(p2 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  geom_point(show_guide = FALSE)
)

E se invece volessi disattivare la legenda dei colori? Non sembra esserci un modo per dire a show_guidequale leggenda applicare il suo comportamento. E non c'è show_guideargomento per scale o estetica.

(p3 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  scale_colour_discrete(show_guide = FALSE) +
  geom_point()
)
# Error in discrete_scale

(p4 <- ggplot(mov, aes(year, rating, shape = mpaa)) +
  aes(colour = length, show_guide = FALSE) +
  geom_point()
)
#draws both legends

Questa domanda suggerisce che il modo moderno (dal momento che ggplot2 v0.9.2) di controllare le leggende è con la guidesfunzione.

Voglio essere in grado di fare qualcosa del genere

p0 + guides(
  colour = guide_legend(show = FALSE) 
)

ma guide_legendnon ha un argomento show.

Come faccio a specificare quali legende vengono visualizzate?


6
Dopo un recente ggplot2aggiornamento, show_guideè stato deprecato e sostituito da show.legend.
Patrick

Risposte:


294

Puoi usarlo guide=FALSEinscale_..._...() per sopprimere la legenda.

Per il tuo esempio dovresti usare scale_colour_continuous()perché lengthè una variabile continua (non discreta).

(p3 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
   scale_colour_continuous(guide = FALSE) +
   geom_point()
)

O utilizzando la funzione guides()si deve impostare FALSEper quell'elemento / estetico che non si vuole apparire come leggenda, per esempio, fill, shape, colour.

p0 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  geom_point()    
p0+guides(colour=FALSE)

AGGIORNARE

Entrambe le soluzioni fornite funzionano con la nuova ggplot2versione 2.0.0 ma il moviesset di dati non è più presente in questa libreria. Invece devi usare un nuovo pacchetto ggplot2moviesper controllare quelle soluzioni.

library(ggplot2movies)
data(movies)
mov <- subset(movies, length != "")

6
Scale_colour_continuous (guide = FALSE) non funziona in ggplot2 0.9.3 ma le guide (color = FALSE) risolvono il problema. Grazie mille Didzis!
Nikolay Nenov,

1
@NikolayNenov Strano, perché entrambe le soluzioni funzionano per me con ggplot2 0.9.3.1
Didzis Elferts

9
Voglio rimuovere la legenda dell'alfa . guides(alpha=FALSE)fare il trucco. Grazie Didzis.
l0o0

3
Nota per se stessi: se hai un geom_linerange()e la legenda mostra una croce anziché una linea, inserisci show.legend=FALSEall'interno di geom_linerange().
PatrickT,

25

Puoi semplicemente aggiungere show.legend=FALSEa geom per sopprimere la legenda corrispondente

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.