我正在尝试将图例添加到两个直方图的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"))
但我得到的只是:
缺少什么?
答案 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"))
借用here,诀窍在于设置每个{{1}的映射(即此处fill
)中的aes
参数然后你可以正常使用histogram
:
scale_fill_manual