首页 > 解决方案 > 如何生成直方图,使其在 ggplot2 的设定范围之间恰好有 n 个 bin?

问题描述

我有一个数据向量,可以取 1 到 100 之间的值。当我绘制一个 bin 大小为 10 的直方图时,我希望有 10 个 bin 的范围为 1-10、11-20 等。然而,我最终得到一个看起来像这样的情节:

在此处输入图像描述

如您所见,外部 bin 的范围超出了我的数据可以采用的值的范围(0 和 100)。

有没有一种方法可以生成直方图,使其在设定范围之间恰好有 n 个 bin?

标签: rggplot2histogramdistribution

解决方案


breaks您可以使用 to 的参数做任何您想做的事情geom_histogram。如果你喜欢,你可以设置特定的(和任意的)binwidths。该breaks参数覆盖binsandbinwidth参数。

library(ggplot2)
set.seed(123)
x <- data.frame(x = sample(1:100, 1000, replace = TRUE))
ggplot(x) +
  geom_histogram(aes(x), breaks = c(0, 13, 27, 45, 88, 100), color = "black") + 
  scale_x_continuous(breaks = c(0, 13, 27, 45, 88, 100))

具有任意中断的直方图

如果您希望在特定范围内(例如 0-100)有 n 个相等的 bin,请使用breaks = seq(0, 100, 100/n). 如果您想要一个比数据更宽的范围,这将很有用。例如,在我的随机样本中,不存在大于 91 的值,但我知道 100 是可能的值,因此我的 bin 需要扩展到 100。


推荐阅读