如何解释pyplot直方图箱?

Chr*_*äck 9 matplotlib histogram

我对matplotlib hist函数感到困惑.

文档说明:

如果是一系列值,则使用二进制数的下限值.

但是当我按顺序有两个值,即[0,1]时,我只得到1个bin.当我有三个这样的时候:

plt.hist(votes, bins=[0,1,2], normed=True)
Run Code Online (Sandbox Code Playgroud)

我只买了两个箱子.我的猜测是最后一个值只是最后一个bin的上限.

有没有办法在最后一个bin中包含值的"其余",除了那个非常大的值?(换句话说,没有让那个箱子比其他箱子大得多)

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

votes = [0,0,1,2]
plt.hist(votes, bins=[0,1])
Run Code Online (Sandbox Code Playgroud)

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

votes = [0,0,1,2]
plt.hist(votes, bins=[0,1,2])
Run Code Online (Sandbox Code Playgroud)

给我两个箱子,每箱两个.我发现这个反作用是直观的,添加一个新的bin会改变其他bin的宽度限制.

votes = [0,0,1]
plit.hist[votes, bins=2) 
Run Code Online (Sandbox Code Playgroud)

yeilds两个大小为2和1的区域.由于x轴从0变为1,因此这些区域似乎已经被分割为0,5.

如何解释bin数组?数据是如何分开的?

sis*_*aty 15

votes = [0, 0, 1, 2]
plt.hist(votes, bins=[0,1])
Run Code Online (Sandbox Code Playgroud)

这会给你一个高度为3的bin,因为它将数据分成一个单独的bin,间隔为:[0,1].它将值放入该bin:0,0和1.

votes = [0, 0, 1, 2]
plt.hist(votes, bins=[0, 1, 2])
Run Code Online (Sandbox Code Playgroud)

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

如果你试图绘图:

plt.hist(votes, bins=[0, 1, 2, 3])
Run Code Online (Sandbox Code Playgroud)

数据分割成垃圾箱背后的想法是一样的:你会得到三个区间:[0,1 [; [1,2 [; [2,3],你会注意到值2改变了它的bin,以间隔[2,3]进入bin(而不是像上一个例子一样留在bin [1,2]中).

总之,如果你在bin参数中有一个有序数组,如:[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`中的值是整数),那么你可以将这些关于开/关集的细节放在一边. (6认同)