Supprimer les légendes supplémentaires dans ggplot2

J’ai un simple ggplot2 données que j’essaie de faire un tracé de lignes et de points combiné 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’essaie 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 correct avec une exception. Il a une légende supplémentaire montrant l’ alpha pour ma couche geom_point .

<img src="http://soffr.miximages.com/r/tCeVym.jpg" alt="Légende supplémentaire pour la transparence de geom_point “>

Comment conserver la légende indiquant les couleurs de groupe, mais pas celle qui montre mes parameters alpha?

L’esthétique peut être définie 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 sur une seule valeur, en la définissant en dehors de aes() .

Dans ce cas, il semble que vous souhaitiez définir alpha = 0.8 et map colour = group .

Pour faire ça,

Placez l’ alpha = 0.8 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 

entrer la description de l'image ici

Pour toute variable mappée , vous pouvez supprimer l'apparence d'une légende en utilisant guide = 'none' dans l'appel à l' scale_... appropriée 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') 

Qui retournera une plot identique

Le commentaire de EDIT @ Joran est parfait, ma réponse est plus complète

Ajoutez simplement le code 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) 

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

J’ai essayé ceci avec une 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 ça a fonctionné.

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