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 celle-ci:
(p1 <- p0 + theme(legend.position = "none"))
Passer show_guide = FALSE
à geom_point
(selon 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 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 le moyen 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 show.
Comment spécifier les légendes à afficher?
Vous pouvez utiliser guide=FALSE
dans scale_..._...()
pour supprimer la légende.
Pour votre exemple, vous devriez 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 la fonction guides()
, vous devez définir FALSE
pour cet élément/esthétique que vous ne souhaitez pas afficher en tant que légende, par exemple, fill
, shape
, colour
.
p0 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
geom_point()
p0+guides(colour=FALSE)
Les deux solutions fournies fonctionnent dans le nouveau ggplot2
version 2.0.0 mais le jeu de données movies
n'est plus présent dans cette bibliothèque. Au lieu de cela, vous devez utiliser le nouveau package ggplot2movies
pour vérifier ces solutions.
library(ggplot2movies)
data(movies)
mov <- subset(movies, length != "")
Vous pouvez simplement ajouter show.legend=FALSE
à geom pour supprimer la légende correspondante.