将图例添加到多直方图ggplot

时间:2016-09-04 23:15:13

标签: r ggplot2

我正在尝试将图例添加到两个直方图的ggplot中,这两个直方图可能重叠,因此希望它们稍微透明:

library(ggplot2)
set.seed(1)
plot.df <- data.frame(x=c(rnorm(1000,30,1),rnorm(10000,40,5)),
                      group=c(rep("a",1000),rep("b",10000)))

使用:

ggplot(plot.df,aes(x=x,fill=factor(group)))+ 
  geom_histogram(data=subset(plot.df,group=='a'),fill="red",alpha=0.5)+
  geom_histogram(data=subset(plot.df,group=='b'),fill="darkgray",alpha=0.5)+
  scale_colour_manual(name="group",values=c("red","darkgray"),labels=c("a","b"))+scale_fill_manual(name="group",values=c("red","darkgray"),labels=c("a","b"))

但我得到的只是:

enter image description here

缺少什么?

1 个答案:

答案 0 :(得分:4)

您可以将映射中的fill参数指定为group变量,而不是单独绘制两个hisgrams,在这种情况下,图例将自动生成。

ggplot(plot.df, aes(x=x, fill = group)) + 
  geom_histogram(alpha = 0.5) + 
  scale_fill_manual(name="group",values=c("red","darkgray"),labels=c("a","b"))

enter image description here

借用here,诀窍在于设置每个{{1}的映射(即此处fill)中的aes参数然后你可以正常使用histogram

scale_fill_manual

enter image description here