1

这是代码:

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()是正确的。

4

2 回答 2

4

因为stat_density()默认位置是"stack"- 所以这三行是堆叠的。plot()得到与使用相同的结果position="identity"

ggplot(dat)+ stat_density(aes(x=res, group=method, color=as.factor(method)), 
         geom='line',position="identity")

在此处输入图像描述

于 2013-10-28T14:28:08.367 回答
1

为什么不使用 geom_density?

  ggplot(dat) + 
  geom_density(aes(x=res, color=as.factor(method)))
于 2013-10-28T14:32:30.280 回答