web-dev-qa-db-fra.com

Comment puis-je supprimer le titre de légende dans ggplot2?

J'ai une question concernant la légende de ggplot2.

Disons que j'ai un ensemble de données hypothétique sur la longueur moyenne des carottes pour deux couleurs différentes dans deux fermes:

carrots<-NULL
carrots$Farm<-rep(c("X","Y"),2)
carrots$Type<-rep(c("Orange","Purple"),each=2)
carrots$MeanLength<-c(10,6,4,2)
carrots<-data.frame(carrots)

Je fais un simple graphique à barres:

require(ggplot2)
p<-ggplot(carrots,aes(y=MeanLength,x=Farm,fill=Type)) + 
geom_bar(position="dodge") +
opts(legend.position="top")
p

Ma question est: existe-t-il un moyen de supprimer le titre ('Type') de la légende?

Merci!

55
susjoh

Vous pouvez modifier le titre de la légende en le passant comme premier paramètre à une échelle. Par exemple:

ggplot(carrots, aes(y=MeanLength, x=Farm, fill=Type)) + 
  geom_bar(position="dodge") +
  theme(legend.position="top", legend.direction="horizontal") +
  scale_fill_discrete("")

Il existe également un raccourci pour cela, c'est-à-dire labs(fill="")

Étant donné que votre légende est en haut du graphique, vous pouvez également souhaiter modifier l'orientation de la légende. Vous pouvez le faire en utilisant opts(legend.direction="horizontal").

enter image description here

49
Andrie

J'ai trouvé que la meilleure option est d'utiliser + theme(legend.title = element_blank()) comme l'utilisateur "gkcn" l'a noté.

Pour moi (le 26/03/15) en utilisant la fonction labs(fill="") et scale_fill_discrete("") précédemment suggérée, supprimez un titre, seulement pour ajouter une autre légende, ce qui n'est pas utile.

47
Tom B.

Vous pouvez utiliser labs:

p + labs(fill="")

plot example

29
rcs

La seule façon de travailler pour moi était d'utiliser legend.title = theme_blank() et je pense que c'est la variante la plus pratique par rapport à labs(fill="") et scale_fill_discrete(""), qui pourrait également être utile dans certains cas.

ggplot(carrots,aes(y=MeanLength,x=Farm,fill=Type)) + 
geom_bar(position="dodge") +
opts(
    legend.position="top",
    legend.direction="horizontal",
    legend.title = theme_blank()
)

P.S. Il existe des options plus utiles dans documentation .

23
Yuriy Petrovskiy

Vous avez déjà deux bonnes options, alors voici une autre utilisant scale_fill_manual(). Notez que cela vous permet également de spécifier facilement les couleurs des barres:

ggplot(carrots,aes(y=MeanLength,x=Farm,fill=Type)) + 
  geom_bar(position="dodge") +
  opts(legend.position="top") +
  scale_fill_manual(name = "", values = c("Orange" = "orange", "Purple" = "purple"))

Si vous utilisez la version à jour (en date de janvier 2015) de ggplot2 (version 1.0), alors ce qui suit devrait fonctionner:

ggplot(carrots, aes(y = MeanLength, x = Farm, fill = Type)) +
  geom_bar(stat = "identity", position = "dodge") +
  theme(legend.position="top") +
  scale_fill_manual(name = "", values = c("Orange" = "orange", "Purple" = "purple"))
6
Chase