我对matplotlib hist函数感到困惑。
文档说明:
如果是一系列值,则使用二进制数的下限值。
但是当我在序列中有两个值,即[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)
yeilds两个大小为2和1的区域。由于x轴从0变为1,这些区域似乎已经被分割为0,5。
如何解释bin数组?数据如何分割?
答案 0 :(得分:15)
votes = [0, 0, 1, 2]
plt.hist(votes, bins=[0,1])
这给你一个高度为3的bin,因为它将数据分成一个单独的bin,间隔为:[0,1]。它将值放入该bin:0,0和1。
votes = [0, 0, 1, 2]
plt.hist(votes, bins=[0, 1, 2])
这给你一个带有间隔的区间的直方图:[0,1 [和[1,2]; 所以第1个箱子里有2个物品(0和0),第2个箱子里有2个物品(1和2)。
如果您尝试绘图:
plt.hist(votes, bins=[0, 1, 2, 3])
数据分割成垃圾箱背后的想法是一样的: 你会得到三个间隔: [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]
根据括号打开或关闭每个边界。