如何使用Python为直方图中的可变仓位范围获得相同的仓位宽度?

如何使用Python为直方图中的可变仓位范围获得相同的仓位宽度?,python,numpy,matplotlib,histogram,data-visualization,Python,Numpy,Matplotlib,Histogram,Data Visualization,我正在尝试创建一个带有自定义bin范围的直方图。但是,正如您在下面的柱状图中所看到的,箱子宽度不是一个恒定的大小 理想情况下,我想要这样的东西。箱子之间的间距并不重要,我只希望每个箱子/列的宽度相同: 我用来生成第一个直方图的代码如下: plt.figure() weights = np.ones_like(data)/float(len(data)) plt.hist(data, bins=[0, 1.0, 3.0, 5.0, 10.0, 25.0, 90.0], weights=weig

我正在尝试创建一个带有自定义bin范围的直方图。但是,正如您在下面的柱状图中所看到的,箱子宽度不是一个恒定的大小

理想情况下,我想要这样的东西。箱子之间的间距并不重要,我只希望每个箱子/列的宽度相同:

我用来生成第一个直方图的代码如下:

plt.figure()
weights = np.ones_like(data)/float(len(data))
plt.hist(data, bins=[0, 1.0, 3.0, 5.0, 10.0, 25.0, 90.0], weights=weights) 

我不认为柱状图是你真正想要的。通常直方图具有连续的x轴,在示例中,您显示的a轴值是分类的。在这种情况下,我建议您将数据装箱,并首先获取装箱数量。然后绘制条形图。像这样:

data = np.random.randint(0, 90, 500)
bins = np.array([1,3,5,10,25,90])
digitized = np.digitize(data, bins)
counts = np.bincount(digitized)
fig, ax = plt.subplots()
ax.bar(np.arange(counts.size), counts)
ax.set_xticklabels(['', '0\N{DEGREE SIGN} - 1\N{DEGREE SIGN}', '1\N{DEGREE SIGN} - 3\N{DEGREE SIGN}', '3\N{DEGREE SIGN} - 5\N{DEGREE SIGN}', '5\N{DEGREE SIGN} - 10\N{DEGREE SIGN}', '10\N{DEGREE SIGN} - 25\N{DEGREE SIGN}', '> 25\N{DEGREE SIGN}'])
fig.show()

您希望箱子宽度在图形上相同大小,还是在数字上相同大小?对不起,如果我不清楚,我希望它们在图形上相同大小