9

我对 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 数组应该如何解释?数据如何拆分?

4

1 回答 1

15
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]; 所以你在第一个箱子(0 和 0)中有 2 个项目,在第二个箱子(1 和 2)中有 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] 将创建 bin:
[i_0, i_1[
[i_1, i_2[
[i_2 ,
i_3[ [i_3, i_4[
...
[i_(n-1), i_n]

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

于 2013-03-02T18:06:23.617 回答