How to draw histogram with same bins width for unequally spaced bins in matplotlib

我的梦境 提交于 2019-11-30 17:26:52

问题


I am trying to draw a histogram with multiple data series in matplotlib.

I have unequally spaced bins, however I want that each bin get the same width. So I used attribute width in this way:

aa = [0,1,1,2,3,3,4,4,4,4,5,6,7,9]
plt.hist([aa, aa], bins=[0,3,9], width=0.2)

The result is this:

How can I get rid of the margin between two correspondent bins of the two series? I.e. how can I group for each bin the bars of the different series?

Thanks


回答1:


a solution can be to compute the histogram by numpy and plot the bars individually by hand:

aa1 = [0,1,1,2,3,3,4,4,5,9]
aa2 = [0,1,3,3,4,4,4,4,5,6,7,9]
bins = [0,3,9]
height = [np.histogram( xs, bins=bins)[0] for xs in [aa1, aa2]]
left, n = np.arange(len(bins)-1), len(height)

ax = plt.subplot(111)
color_cycle = ax._get_lines.color_cycle

for j, h in enumerate(height):
    ax.bar(left + j / n, h, width=1.0/n, color=next(color_cycle))

ax.set_xticks(np.arange(0, len(bins)))
ax.set_xticklabels(map(str, bins))



来源:https://stackoverflow.com/questions/22461355/how-to-draw-histogram-with-same-bins-width-for-unequally-spaced-bins-in-matplotl

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!