【问题标题】:How to get the same bin widths for variable bin ranges in a histogram using Python?如何使用 Python 为直方图中的可变 bin 范围获得相同的 bin 宽度?
【发布时间】:2018-06-22 06:39:31
【问题描述】:

我正在尝试使用自定义 bin 范围创建直方图。但是,正如您在下面的直方图中看到的那样,bin 宽度不是一个恒定的大小。

理想情况下,我想要这样的东西。 bins 之间的间距并不重要,我只是希望每个 bin/column 具有相同的宽度:

我用来生成第一个直方图的代码是这样的:

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) 

【问题讨论】:

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

标签: python numpy matplotlib histogram data-visualization


【解决方案1】:

我认为直方图并不是您真正想要的。通常直方图有一个连续的 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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    相关资源
    最近更新 更多