Python pyplot.hist会忽略范围,如果它大于数据集?

时间:2014-05-16 13:30:55

标签: python matplotlib range

我正在为各种数据集制作直方图,并希望它们都使用相同的箱子,以便它们易于比较。然而,似乎如果bin分布比数据集大得多,则hist忽略该范围并使其变小。例如:

x=[random.randrange(1,10) for _ in xrange(1000)]

plt.hist(x, 50, range=[0, 100])
plt.show()

我只能从0到10获得5个分区而不是0到100分。我假设我错过了其他所有参数的显而易见的东西?

谢谢!

1 个答案:

答案 0 :(得分:0)

In [37]: plt.hist(x, 50, range=[0,100])
Out[37]:
(array([ 103.,  228.,  233.,  228.,  208.,    0.,    0.,    0.,    0.,
           0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
           0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
           0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
           0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
           0.,    0.,    0.,    0.,    0.]),
 array([   0.,    2.,    4.,    6.,    8.,   10.,   12.,   14.,   16.,
          18.,   20.,   22.,   24.,   26.,   28.,   30.,   32.,   34.,
          36.,   38.,   40.,   42.,   44.,   46.,   48.,   50.,   52.,
          54.,   56.,   58.,   60.,   62.,   64.,   66.,   68.,   70.,
          72.,   74.,   76.,   78.,   80.,   82.,   84.,   86.,   88.,
          90.,   92.,   94.,   96.,   98.,  100.]),
 <a list of 50 Patch objects>)

该函数返回bin和patch。正如你在这里看到的那样,实际上有50个箱子。 matplotlib只是选择在没有更多数据的地方剪掉数字。