【问题标题】:ggplot2 -- different bin size for histogramggplot2 - 直方图的不同 bin 大小
【发布时间】:2013-10-17 06:36:59
【问题描述】:

我希望有人能够指导我正确的方式。我正在尝试生成大约 100 个直方图,因此我的问题的解决方案必须易于重现。

我有一个值向量,范围从 0.0000(零值)到上限 1.0000。有大量的 0.0000 值,其余的值更加分散。

我现在想创建一个具有不同 bin 大小的直方图。我想为所有零值设置一个 bin,然后 bin 大小应为 0.005

这里有一些可重现的代码来说明我的实际数据:

per_value <- rbeta(200, 1, 1, ncp = 0.3)
percent_change <- c(0,0,0,0,0, rbeta(195, 1, 1, ncp = 0.1))

valua_chg <- data.frame(cbind(per_value, percent_change))

ggplot(valua_chg, aes(x=percent_change)) + 
   stat_bin(breaks=c(0, seq(0.001,1.0, by=0.005)))

这是代码创建的图片:

问题在于,零 bin 的 bin 大小非常小,并且与其他 bin 的大小不同。有谁知道如何解决这个问题。

谢谢!

【问题讨论】:

  • 我不明白。你说你想要一个无限小的 bin 来存放零值,然后你说问题是这个 bin 太小了......?
  • 据我了解,您希望显示与其他条具有相同宽度的零计数的 bin。为此,您需要考虑为 x 比例编写自己的转换。看看这篇文章:blog.ggplot2.org/post/25938265813/…

标签: r ggplot2 histogram


【解决方案1】:

最快、最简单的方法是将最低间隔设置为 -0.004,以便包含零的 bin 具有相同的宽度 0.005。 bin 不会以零为中心,但如果您的数据绑定在 0 和 1 之间,则应该没问题:

ggplot(valua_chg, aes(x=percent_change)) + 
  stat_bin(breaks=c(-0.004, seq(0.001,1.0, by=0.005)))

【讨论】:

  • 我明天将致力于创建因子箱,看看是否能解决问题。如果没有,我将使用您创建一个非常小的零箱的解决方案来显示零计数。