ggplot2中重叠的密度图

rmf*_*ght 6 r ggplot2

想象一下,我有两个不同长度的向量.我想生成一个图,其中两个矢量的密度重叠.我认为我应该做的是:

vec1 <- data.frame(x=rnorm(2000, 0, 1))
vec2 <- data.frame(x=rnorm(3000, 1, 1.5))
ggplot() + geom_density(aes(x=x, colour="red"), data=vec1) + 
  geom_density(aes(x=x, colour="blue"), data=vec2)
Run Code Online (Sandbox Code Playgroud)

然后我想我应该这样做:

vec1 <- data.frame(x=rnorm(2000, 0, 1))
vec2 <- data.frame(y=rnorm(3000, 1, 1.5))
ggplot() + geom_density(aes(x=x, colour="red"), data=vec1) + 
  geom_density(aes(x=y, colour="blue"), data=vec2)
Run Code Online (Sandbox Code Playgroud)

这些都不起作用,因为颜色混杂起来.

根据我在StackOverflow 1 2中找到的另一个解决方案,我意识到我应该尝试这个:

vec1 <- data.frame(x=rnorm(2000, 0, 1), grp="vec1")
vec2 <- data.frame(x=rnorm(3000, 1, 1.5), grp="vec2")
allDat <- rbind(vec1, vec2)

ggplot(allDat, aes(x, colour=grp)) + geom_density()

ggplot(allDat, aes(x, colour=grp)) + geom_density() + 
  scale_colour_manual(values=c("green", "blue"))

ggplot(allDat, aes(x, colour=grp)) + geom_density() + 
  scale_colour_manual(values=c(vec2="green", vec1="blue"))
Run Code Online (Sandbox Code Playgroud)

好的,我解决了原来的问题.但有没有办法做一些类似我上面尝试的第一个?从ggplot文档中措辞的方式来看,我会这么认为.感谢任何建议.

Sve*_*ein 18

如果你移出colour参数的赋值,一切都会正常工作aes().

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

library(ggplot2)

ggplot() + geom_density(aes(x=x), colour="red", data=vec1) + 
  geom_density(aes(x=x), colour="blue", data=vec2)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述