2015-08-15 1 views
2

Je dessine un histogramme à l'aide de ggplot2 et superpose un tracé de densité (en noir). Je superpose alors un tracé de densité normale (en rouge).Ajouter une légende à l'histogramme ggplot avec des tracés de densité superposés

set.seed(1234) 
dat <- data.frame(cond = factor(rep(c("A","B"), each=200)), rating = c(rnorm(200),rnorm(200, mean=.8))) 
plot <- ggplot(dat, aes(x = rating)) 
plot <- plot + geom_histogram(aes(y=..density..), color="black", fill = "steelblue", binwidth = 0.5, alpha = 0.2) 
plot <- plot + geom_density() 
plot <- plot + stat_function(fun = dnorm, colour = "red", args = list(mean = 0.3, sd = 1)) 
plot 

Actuellement, l'intrigue semble que je veux regarder, mais il manque une légende expliquant les parcelles de densité de noir et rouge et je ne l'ai pas été en mesure de comprendre comment les ajouter.

enter image description here

J'apprends R et toute aide serait grandement apprécié.

+0

Vous devez vous assurer que vous avez vos données dans le format afin d'obtenir une légende automatiquement défini par votre variable de regroupement. Vérifiez ici: http://www.cookbook-r.com/Graphs/Plotting_distributions_(ggplot2)/ – AntoniosK

+0

Voir cette réponse pour une solution possible. La seule différence est que vous utilisez 'stat_function' et' geom_density' plutôt que 'geom_vline': http://stackoverflow.com/questions/24438462/creating-legend-in-geom-histogram-for-elements-created-from- geom-vline – MrFlick

+0

Merci pour vos réponses. – dvd940

Répondre

1

Une option est la suivante. Vous devez d'abord inclure les étiquettes de légende avec aes(color = "Name you want"), puis ajouter les couleurs en utilisant scale_colour_manual.

plot <- ggplot(dat, aes(x = rating)) 
plot <- plot + geom_histogram(aes(y = ..density..), color = "black", fill = "steelblue", binwidth = 0.5, alpha = 0.2) 
plot <- plot + geom_density(aes(color = "Density")) 
plot <- plot + stat_function(aes(colour = "Normal"), fun = dnorm, args = list(mean = 0.3, sd = 1)) + 
    scale_colour_manual("Legend title", values = c("black", "red")) 
plot 

enter image description here

+0

Merci. J'apprécie ton aide. – dvd940