79 votes

Suppression des légendes supplémentaires dans ggplot2

J'ai un cadre de données simple pour lequel j'essaie d'effectuer un tracé combiné de lignes et de points à l'aide de ggplot2 . Supposons que mes données ressemblent à ceci :

df <- data.frame(x=rep(1:10,2), y=c(1:10,11:20), 
                 group=c(rep("a",10),rep("b",10)))

Et j'essaie de créer une intrigue :

g <- ggplot(df, aes(x=x, y=y, group=group))
g <- g + geom_line(aes(colour=group))
g <- g + geom_point(aes(colour=group, alpha = .8))
g

Le résultat est parfait, à une exception près. Il y a une légende supplémentaire qui montre le alpha pour mon geom_point couche.

Extra Legend for <code>geom_point</code> transparency

Comment puis-je garder la légende qui montre les couleurs des groupes, mais pas celle qui montre mes paramètres alpha ?

152voto

mnel Points 48160

L'esthétique peut être set ou cartographié dans un ggplot appeler.

  • Une esthétique définie à l'intérieur aes(...) es cartographié à partir des données, et une légende a été créée.
  • Une esthétique peut également être set à une seule valeur, en la définissant en dehors de aes() .

Dans ce cas, il semble que vous souhaitiez set alpha = 0.8 y carte colour = group .

Pour ce faire,

Placez le alpha = 0.8 en dehors de la aes() définition.

g <- ggplot(df, aes(x = x, y = y, group = group))
g <- g + geom_line(aes(colour = group))
g <- g + geom_point(aes(colour = group), alpha = 0.8)
g

enter image description here

Pour tout cartographié vous pouvez supprimer l'apparition d'une légende en utilisant la variable guide = 'none' dans la section appropriée scale_... appel. par exemple.

g2 <- ggplot(df, aes(x = x, y = y, group = group)) + 
        geom_line(aes(colour = group)) +
        geom_point(aes(colour = group, alpha = 0.8))
g2 + scale_alpha(guide = 'none')

Ce qui retournera une parcelle identique

EDIT Le commentaire de @Joran est juste, j'ai rendu ma réponse plus complète.

66voto

CSV Points 231

Il suffit d'ajouter le show.legend = F après la partie où vous ne le voulez pas.

g <- ggplot(df, aes(x=x, y=y, group=group))
g <- g + geom_line(aes(colour=group))
g <- g + geom_point(aes(colour=group, alpha = .8), show.legend = F)

0voto

Georgette Points 1

Pour les anciennes versions de ggplot2 (versions antérieures à 0.9.2, publiées fin 2012), cette réponse devrait fonctionner :

J'ai essayé avec un colour_scale et ça n'a pas marché. Il semble que le colour_scale_hue fonctionne comme une fonction avec un paramètre par défaut TRUE . J'ai ajouté scale_colour_hue(legend=FALSE) et ça a marché.

Je ne suis pas sûr que ce soit le cas pour tous les éléments de l'échelle de couleurs dans ggplot.

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