6

我有一个数据框,想根据两列做一个叠加密度图。我希望颜色是透明的。我已经使用填充选项完成了这项工作,并且基本上将填充指定为一个因子列。默认情况下,当您有一个因子列时,所有填充都是透明的。

但是在这种没有因素的情况下,我们如何用透明填充它。

library("ggplot2")
vec1 <- data.frame(x=rnorm(2000, 0, 1))
vec2 <- data.frame(x=rnorm(3000, 1, 1.5))

ggplot() + geom_density(aes(x=x), fill="red", data=vec1) + 
  geom_density(aes(x=x), fill="blue", data=vec2)

我尝试添加geom_density(alpha=0.4),但没有任何好处。 在此处输入图像描述

4

1 回答 1

12

像这样?

ggplot() + geom_density(aes(x=x), fill="red", data=vec1, alpha=.5) + 
  geom_density(aes(x=x), fill="blue", data=vec2, alpha=.5)

编辑对 OP 评论的回应。

这是用 绘制多条曲线的惯用方式ggplot

gg <- rbind(vec1,vec2)
gg$group <- factor(rep(1:2,c(2000,3000)))
ggplot(gg, aes(x=x, fill=group)) + 
  geom_density(alpha=.5)+
  scale_fill_manual(values=c("red","blue"))

所以我们首先将两个数据集绑定在一起,然后添加一个分组变量。然后我们告诉ggplot哪个是分组变量,它会处理其他所有事情。

于 2014-05-21T01:35:56.437 回答