Comment changer le titre de la légende dans ggplot
J'ai l'intrigue suivante comme ci-dessous. Il a été créé avec cette commande:
library(ggplot2)
df <- data.frame(cond = factor(rep(c("A", "B"), each = 200)),
rating = c(rnorm(200), rnorm(200, mean=.8)))
ggplot(df, aes(x=rating, fill=cond)) +
geom_density(alpha = .3) +
xlab("NEW RATING TITLE") +
ylab("NEW DENSITY TITLE")
Maintenant, la prochaine chose que je veux faire est de modifier le titre de légende à partir de cond dans NOUVEAU TITRE de LÉGENDE.
Donc, ce que j'ai fait est d'ajouter simplement la ligne suivante ajouter la fin du code ci-dessus:
+labs(colour="NEW LEGEND TITLE")
Mais ça ne marche pas. Quelle est la bonne façon de le faire?
8 réponses
Cela devrait fonctionner:
p <- ggplot(df, aes(x=rating, fill=cond)) +
geom_density(alpha=.3) +
xlab("NEW RATING TITLE") +
ylab("NEW DENSITY TITLE")
p <- p + guides(fill=guide_legend(title="New Legend Title"))
(ou alternativement)
p + scale_fill_discrete(name = "New Legend Title")
Je n'ai pas beaucoup creusé dans cela mais parce que vous avez utilisé fill = cond dans ggplot (),
+ labs(color='NEW LEGEND TITLE')
Pourrait ne pas avoir fonctionné. Cependant, il vous remplacer couleur par remplir, il fonctionne!
+ labs(fill='NEW LEGEND TITLE')
Cela a fonctionné pour moi dans ggplot2_2. 1. 0
PS j'aurais commenté mais ma réputation de stackoverflow ne suffit pas à commenter.
Puisque vous avez deux densités, j'imagine que vous voudrez peut-être définir vos propres couleurs avec scale_fill_manual
.
Si c'est le cas, vous pouvez faire:
df <- data.frame(x=1:10,group=c(rep("a",5),rep("b",5)))
legend_title <- "OMG My Title"
ggplot(df, aes(x=x, fill=group)) + geom_density(alpha=.3) +
scale_fill_manual(legend_title,values=c("orange","red"))
Puisque dans votre code vous avez utilisé ggplot(data, fill= cond)
pour créer l'histogramme, vous devez ajouter le titre de la légende en utilisant également "fill" dans la section label, c'est-à-dire +labs(fill="Title name")
. Si vous utilisiez un type de tracé différent où le code était ggplot (data, colour = cond), vous pouvez utiliser +labs(colour= "Title Name")
. En résumé, l'argument lab doit correspondre à l'argument AES.
J'ai utilisé + guides(fill=guide_legend("my awesome title"))
pour changer le titre de la légende sur les tracés geom_bar mais cela ne semblait pas fonctionner pour geom_point.
Aucun des codes ci-dessus n'a fonctionné pour moi.
Voici ce que j'ai trouvé et ça a marché.
labs(color = "sale year")
, Vous pouvez aussi donner un espace entre le titre et l'affichage en ajoutant \n
à la fin.
labs(color = 'sale year\n")
Il y a une autre réponse très simple qui peut fonctionner pour certains graphiques simples.
Ajoutez simplement un appel à guide_legend () dans votre graphique.
ggplot(...) + ... + guide_legend(title="my awesome title")
Comme le montre la très belle ggplot docs .
Si cela ne fonctionne pas, vous pouvez ajuster plus précisément vos paramètres de guidage avec un appel à guides:
ggplot(...) + ... + guides(fill=guide_legend("my awesome title"))
Vous pouvez également varier la forme / couleur / taille en spécifiant ces paramètres pour votre appel à guides
.
J'utilise un facet_wrap dans mon ggplot et aucune des solutions suggérées n'a fonctionné pour moi sauf la solution D'ArnaudA:
qplot(…) + guides(color=guide_legend(title="sale year"))
Vous pouvez aussi ajouter une seule ligne (dernière ligne):
ggplot(df, aes(x=rating, fill=cond)) +
geom_density(alpha = .3) +
xlab("NEW RATING TITLE") +
ylab("NEW DENSITY TITLE") +
labs(fill = "Your Title")