假设我有两个长度不同的向量,我想要生成一个密度曲线图,将两个向量的密度曲线叠加在一起。我认为我应该这样做:
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上找到的另一个解决方案12,我意识到应该尝试这个:
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
文档中的措辞来看,我本以为会有这样的方式。感谢任何建议。
scale_colour_manual(values = c('blue','red'))
,但最后一次尝试可能是更被接受的方法。 - jorangeom_density
调用中交换它们来将它们反转回来?我意识到这很反常,但你的第一次尝试并不符合ggplot中图例逻辑的工作方式。你不能在几何对象中为事物分配颜色标签。这不是正确的做法。 - joran