使用ggplot给叠加密度图的直方图添加图例

3
我正在使用ggplot2绘制直方图,并叠加密度曲线(黑色)。接着,我又添加了一个正态分布的密度曲线(红色)。
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

目前,这个图表看起来符合我的预期,但是缺少解释黑色和红色密度图的图例,并且我还没有找到添加它们的方法。

enter image description here

我正在学习R,非常感谢任何帮助。


你需要确保数据格式正确,才能通过分组变量自动定义图例。请查看此链接:http://www.cookbook-r.com/Graphs/Plotting_distributions_(ggplot2)/ - AntoniosK
参见此答案,其中提供了一种可能的解决方案。唯一的区别是您使用 stat_functiongeom_density 而不是 geom_vline:http://stackoverflow.com/questions/24438462/creating-legend-in-geom-histogram-for-elements-created-from-geom-vline - MrFlick
感谢您的回复。 - dvd940
1个回答

3
一个选项是这样的。首先你需要使用aes(color = "你想要的名称")包含图例标签,然后使用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


谢谢。我很感激你的帮助。 - dvd940

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接