我正在尝试向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)))
Run Code Online (Sandbox Code Playgroud)
使用:
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"))
Run Code Online (Sandbox Code Playgroud)
但我得到的是:
少了什么东西?
您可以fill
将映射中的参数指定为group
变量,而不必分别绘制两个直方图,在这种情况下将自动生成图例。
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"))
Run Code Online (Sandbox Code Playgroud)
从这里借来的诀窍在于在每个图fill
的映射(即aes
此处)中设置参数histogram
,然后可以scale_fill_manual
正常使用:
ggplot(plot.df,aes(x=x))+
geom_histogram(data=subset(plot.df,group=='a'),aes(fill=group),alpha=0.5)+
geom_histogram(data=subset(plot.df,group=='b'),aes(fill=group),alpha=0.5)+
scale_fill_manual(name="group", values=c("red","darkgray"),labels=c("a","b"))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6257 次 |
最近记录: |