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

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

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

Mais que faire si je veux désactiver la légende des couleurs à la place? Il ne semble pas y avoir de moyen de dire à show_guide quelle légende appliquer à son comportement. Et il n’y a pas d’argument show_guide 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 manière moderne (depuis ggplot2 v0.9.2) de contrôler les légendes est avec la fonction guides .

Je veux pouvoir faire quelque chose comme

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

mais guide_legend n’a pas d’argument de show.

Comment spécifier les légendes affichées?

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

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

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

Ou en utilisant les guides() fonctions guides() vous devez définir FALSE pour cet élément / esthétique que vous ne voulez pas voir apparaître comme 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 version 2.0.0 de ggplot2 , mais l'dataset de movies n'est plus présent dans cette bibliothèque. Au lieu de cela, vous devez utiliser le nouveau paquet ggplot2movies pour vérifier ces solutions.

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

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