如何使不等垃圾箱的直方图正确显示?

时间:2019-06-11 14:50:05

标签: python matplotlib histogram bins

我的数据包含以下内容:

多数数<60,然后是2000年代的一些异常值。

我要在具有以下bin范围的直方图中显示它:

0-1, 1-2, 2-3, 3-4, ..., 59-60, 60-max

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.axes as axes

b = list(range(61)) + [2000] # will make [0, 1, ..., 60, 2000]

plt.hist(b, bins=b, edgecolor='black')
plt.xticks(b)

plt.show()

这显示以下内容:

enter image description here

基本上,您看到的是所有数字0 .. 60在左边一起压,而2000在右边。这不是我想要的。

因此,我删除了[2000]并得到了我想要的东西:

enter image description here

如您所见,现在比较好,但是我仍然遇到以下问题:

如何解决此问题,以使图形周围没有空白(0之前和60之后有很大的差距)。

我如何解决这个问题,使得在60点之后,最后显示2000个刻度,同时仍保持大致相同的间距(不像第一个一样?)

1 个答案:

答案 0 :(得分:0)

这是一种使用一些随机数据的骇客解决方案。我仍然不太明白您的第二个问题,但我尝试根据您的措辞来做些事情

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.axes as axes

fig, ax = plt.subplots(figsize=(12, 6))
data= np.random.normal(10, 5, 5000)

upper = 31
outlier = 2000

data = np.append(data, 100*[upper])
b = list(range(upper)) + [upper]

plt.hist(data, bins=b, edgecolor='black')
plt.xticks(b)
b[-1] = outlier
ax.set_xticklabels(b)
plt.xlim(0, upper)
plt.show()

enter image description here