想象一下,我有两个不同长度的向量。我想生成一个覆盖两个向量密度的图。我认为我应该做的是:
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)
然后我想我应该这样做:
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)
这些都不太管用,因为颜色混合了。
基于我在 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"))
好的,我解决了我原来的问题。但是有没有办法做类似于我上面尝试的第一个方法?从文档中的措辞方式来看ggplot
,我会这么认为。感谢任何建议。