Désactiver certaines légendes dans un ggplot

221

Supposons que j'ai un ggplot avec plus d'une légende.

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

Je peux désactiver l'affichage de toutes les légendes comme ceci:

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

Passer show_guide = FALSEà geom_point(conformément à cette question ) désactive la légende de la forme.

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

Mais que se passe-t-il si je souhaite désactiver la légende des couleurs à la place? Il ne semble pas y avoir de moyen de dire à show_guidequelle légende appliquer son comportement. Et il n'y a aucun show_guideargument pour les échelles ou l'esthétique.

(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

Cette question suggère que la façon moderne (depuis ggplot2 v0.9.2) de contrôler les légendes est avec la guidesfonction.

Je veux pouvoir faire quelque chose comme

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

mais guide_legendn'a pas d'argument show.

Comment spécifier les légendes à afficher?

Richie Cotton
la source
6
Après une récente ggplot2mise à jour, show_guidea été déprécié et remplacé par show.legend.
PatrickT

Réponses:

294

Vous pouvez utiliser guide=FALSEdans scale_..._...()pour supprimer la légende.

Pour votre exemple, vous devez utiliser scale_colour_continuous()car lengthest une variable continue (non discrète).

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

Ou fonction à l' aide guides()vous devez définir FALSEpour cet élément / esthétique que vous ne voulez pas apparaître comme la légende, par exemple, fill, shape, colour.

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

METTRE À JOUR

Les deux solutions fournies fonctionnent dans la nouvelle ggplot2version 2.0.0 mais l' moviesensemble de données n'est plus présent dans cette bibliothèque. Au lieu de cela, vous devez utiliser un nouveau package ggplot2moviespour vérifier ces solutions.

library(ggplot2movies)
data(movies)
mov <- subset(movies, length != "")
Didzis Elferts
la source
6
Le scale_colour_continuous (guide = FALSE) ne fonctionne pas dans ggplot2 0.9.3 mais guides (color = FALSE) résout le problème. Merci beaucoup Didzis!
Nikolay Nenov
1
@NikolayNenov Strange, car les deux solutions fonctionnent pour moi avec ggplot2 0.9.3.1
Didzis Elferts
9
Je veux supprimer la légende de l' alpha . guides(alpha=FALSE)faire l'affaire. Merci, Didzis.
l0o0
3
Remarque à vous-même: si vous en avez un geom_linerange()et que la légende montre une croix au lieu d'une ligne, insérez-la show.legend=FALSEà l'intérieur du geom_linerange().
PatrickT
25

Vous pouvez simplement ajouter show.legend=FALSEà geom pour supprimer la légende correspondante

fc9.30
la source