1

我的数据看起来有点像这样:

myData <- data.frame(dist1=rep(0.5, 1000), dist2=rnorm(1000,0.8,0.01), dist3=rnorm(1000,0.7,0.05))

请注意, dist1 仅包含数字 0.5。

问题:你将如何在 R 中使用 ggplot 绘制这些数据?

我失败的尝试:

如果我尝试 geom_density 那么它对 dist1 不公平:

ggplot(melt(myData), aes(x=value, colour=variable)) + geom_density()

在此处输入图像描述

我知道我可以调整内核宽度,但随着 dist1 变得尖尖,dist2 和 dist3 开始分解 在此处输入图像描述

如果我尝试 geom_freqpoly ,那么它会自动选择 bin 边界并导致 dist1 峰值位于 0.5 的一侧,从而使期望它达到 0.5 的读者感到困惑:

ggplot(melt(myData), aes(x=value, colour=variable)) + geom_freqpoly()

在此处输入图像描述

我知道我可以更改 bin 宽度,但不能更改 bin 分区本身,否则我会确保 bin 分区在 0.5 的两侧等距。

4

1 回答 1

0

我找到了一种通过使用带有 line geom 的 stat_bin 而不是 geom_freqpoly 来操作 bin 的方法。似乎给出了一个大大改进和可调的结果:

ggplot(melt(myData), aes(x=value, colour=variable)) + 
  stat_bin(origin = 0.491, binwidth = 0.006, geom='line', position='identity')

在此处输入图像描述

于 2012-11-18T21:55:52.537 回答