以下是代码:
dat = data.frame(method=gl(3, 100), res=c(rnorm(100), rnorm(100, 1, 1), rnorm(100, 2, 1)))
png('/tmp/a.png')
p = ggplot(dat)
p = p + stat_density(aes(x=res, group=method, color=as.factor(method)), geom='line')
print(p)
dev.off()
png('/tmp/b.png')
res1 = dat[dat$method==1, ]
res2 = dat[dat$method==2, ]
res3 = dat[dat$method==3, ]
plot(density(res1))
lines(density(res2$res), col='green')
lines(density(res3$res), col='red')
dev.off()
结果:
可以看到使用plot()
的第二个数字是正确的。
答案 0 :(得分:4)
对于stat_density()
默认位置为"stack"
- 所以这三行是堆叠的。要获得与plot()
中相同的结果,请使用position="identity"
。
ggplot(dat)+ stat_density(aes(x=res, group=method, color=as.factor(method)),
geom='line',position="identity")
答案 1 :(得分:1)
为什么不使用geom_density?
ggplot(dat) +
geom_density(aes(x=res, color=as.factor(method)))