254 votes

Désactiver certaines légendes dans un ggplot

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

Passage show_guide = FALSE a geom_point (conformément à la cette question ) désactive la légende des formes.

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

Mais que se passe-t-il si je veux désactiver la légende des couleurs ? Il ne semble pas y avoir de moyen de le faire. show_guide la légende à laquelle appliquer son comportement. Et il n'y a pas de show_guide argument d'échelle ou d'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 fonction guides fonction.

Je veux pouvoir faire quelque chose comme

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

mais guide_legend n'a pas d'argument de démonstration.

Comment puis-je spécifier les légendes à afficher ?

7 votes

Après une récente ggplot2 mettre à jour, show_guide a été supprimée et remplacée par show.legend .

347voto

Didzis Elferts Points 29673

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

Dans votre exemple, vous devez utiliser scale_colour_continuous() parce que length est une variable continue (et non discrète).

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

Ou en utilisant la fonction guides() vous devez définir "none" pour cet élément/esthétique que vous ne voulez pas voir apparaître en légende, par exemple, fill , shape , colour .

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

MISE À JOUR

Les deux solutions proposées fonctionnent dans de nouvelles ggplot2 version 3.3.5 mais movies n'est plus présent dans cette bibliothèque. A la place, vous devez utiliser le nouveau paquet ggplot2movies pour vérifier ces solutions.

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

9 votes

La fonction scale_colour_continuous(guide = FALSE) ne fonctionne pas dans ggplot2 0.9.3 mais guides(colour=FALSE) résout le problème. Merci beaucoup Didzis !

1 votes

@NikolayNenov Etrange, car les deux solutions fonctionnent pour moi avec ggplot2 0.9.3.1

10 votes

Je souhaite supprimer légende de l'alpha . guides(alpha=FALSE) font l'affaire. Merci, Didzis.

56voto

fc9.30 Points 505

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X