web-dev-qa-db-fra.com

Supprimer les légendes supplémentaires dans ggplot2

J'ai un cadre de données simple que j'essaie de faire un tracé combiné de lignes et de points en utilisant ggplot2. En supposant 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'essaye de faire un complot:

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 semble bon, à une exception près. Il a une légende supplémentaire montrant le alpha pour mon geom_point couche.

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

Comment puis-je conserver la légende affichant les couleurs du groupe, mais pas celle indiquant les paramètres alpha?

74
Wilduck

L'esthétique peut être définir ou mappée dans un appel ggplot.

  • Une esthétique définie dans aes(...) est mappée à partir des données et une légende est créée.
  • Une esthétique peut également être définie à une valeur unique, en la définissant en dehors de aes().

Dans ce cas, il semble que vous souhaitiez définiralpha = 0.8 Et mapcolour = group.

Pour faire ça,

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

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 toute variable mappée, vous pouvez supprimer l’apparence d’une légende en utilisant guide = 'none' Dans l’appel approprié scale_.... 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 sur le vif, j'ai rendu ma réponse plus complète

146
mnel

Ajoutez simplement le show.legend = F code après la partie où vous ne le souhaitez 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)
23
CSV

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

J'ai essayé ceci avec un colour_scale Et cela n'a pas fonctionné. Il semble que l'élément colour_scale_hue Fonctionne comme une fonction avec un paramètre par défaut TRUE. J'ai ajouté scale_colour_hue(legend=FALSE) et cela a fonctionné.

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

0
Georgette