【问题标题】:How is the pyplot histogram bins interpreted?如何解释 pyplot 直方图箱?
【发布时间】:2013-02-17 02:29:03
【问题描述】:

我对 matplotlib hist 函数感到困惑。

文档说明:

如果是一系列值,则为要使用的 bin 的下界值。

但是当我在序列中有两个值时,即 [0,1],我只得到 1 个 bin。 当我有三个这样的时候:

plt.hist(votes, bins=[0,1,2], normed=True)

我只得到两个垃圾箱。我的猜测是最后一个值只是最后一个 bin 的上限。

有没有办法让最后一个 bin 中的“其余”值,除了一个非常大的值? (或者换句话说,没有让那个垃圾箱比其他垃圾箱大得多)

似乎最后一个 bin 值包含在最后一个 bin 中

votes = [0,0,1,2]
plt.hist(votes, bins=[0,1])

这给了我一个高度为 3 的箱子,即 0,0,1。 而:

votes = [0,0,1,2]
plt.hist(votes, bins=[0,1,2])

给我两个箱子,每个箱子两个。 我觉得这个反直觉很直观,添加一个新的 bin 会改变其他 bin 的宽度限制。

votes = [0,0,1]
plit.hist[votes, bins=2) 

产生两个大小为 2 和 1 的箱子。由于 x 轴从 0 到 1,这些似乎已在 0,5 上拆分。

bins 数组应该如何解释?数据如何拆分?

【问题讨论】:

  • 您使用的是哪个版本的mpl?不久前numpy 的 hist 函数发生了变化,稍微改变了bins 的含义,请务必确保您查看的文档与您使用的版本相匹配。
  • 我使用的是 1.6.1 版本。谢谢你的来信。

标签: matplotlib histogram


【解决方案1】:
votes = [0, 0, 1, 2]
plt.hist(votes, bins=[0,1])

这会为您提供一个高度为 3 的 bin,因为它将数据拆分为一个间隔为:[0, 1] 的 bin。它将以下值放入该 bin 中:0、0 和 1。

votes = [0, 0, 1, 2]
plt.hist(votes, bins=[0, 1, 2])

这会给你一个带有间隔的柱状图的直方图:[0, 1[ 和 [1, 2]; 所以你有 2 个项目在第 1 个箱子(0 和 0),2 个项目在第 2 个箱子(1 和 2)。

如果你尝试绘图:

plt.hist(votes, bins=[0, 1, 2, 3])

将数据拆分为 bin 背后的想法是相同的: 你会得到三个间隔: [0, 1[; [1, 2[; [2, 3],你会注意到值 2 改变了它的 bin,进入间隔为 [2, 3] 的 bin(而不是像前面的例子那样停留在 bin [1, 2] 中)。

总之,如果您在 bins 参数中有一个有序数组,例如: [i_0, i_1, i_2, i_3, i_4, ..., i_n] 这将创建垃圾箱:
[i_0, i_1[
[i_1, i_2[
[i_2,i_3[
[i_3, i_4[
...
[i_(n-1), i_n]

根据括号将每个打开或关闭的边界。

【讨论】:

  • 另一种更清楚/表现更好的方法是从 bin 边缘减去 0.5(如果您希望 votes 中的值是整数),这样您就可以绕过这些细节开/闭集。
  • 还 +1 以获得对打开/关闭集问题的详细信息的超清晰解释。
猜你喜欢
  • 1970-01-01
  • 2021-01-12
  • 2017-12-19
  • 1970-01-01
  • 2022-01-06
  • 1970-01-01
  • 2016-07-20
  • 2021-10-29
  • 1970-01-01
相关资源
最近更新 更多