Python 如何在matplotlib中为不等间距的存储单元绘制具有相同存储单元宽度的直方图
我试图在matplotlib中绘制包含多个数据系列的直方图 我有不等间距的箱子,但我希望每个箱子都有相同的宽度。所以我使用属性Python 如何在matplotlib中为不等间距的存储单元绘制具有相同存储单元宽度的直方图,python,matplotlib,histogram,Python,Matplotlib,Histogram,我试图在matplotlib中绘制包含多个数据系列的直方图 我有不等间距的箱子,但我希望每个箱子都有相同的宽度。所以我使用属性width的方式如下: 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) 结果是: 如何消除两个系列的两个对应箱子之间的余量?即,我如何为每个箱子分组不同系列的棒材 多亏了一个解决方案是用numpy计算直方图,然后用手分别绘制条形图: aa1 = [0,1,1,
width
的方式如下:
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)
结果是:
如何消除两个系列的两个对应箱子之间的余量?即,我如何为每个箱子分组不同系列的棒材
多亏了一个解决方案是用numpy计算直方图,然后用手分别绘制条形图:
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))
很好的解决方案。。我只是等了一会儿,想知道里面有没有什么东西+1目前,
width
可以是一个数组。我把这个问题理解为希望栏的宽度与箱子的宽度一致……因为没有其他答案,我接受它。请注意,此解决方案仅适用于Python 3+,因为在ax.bar()调用中计算偏移量时使用了隐式浮点除法。考虑添加<代码>浮点(j)< /Case> CAST,以便对Python 2也有用。Thanks@unsel我想你关于浮点数的看法是对的;我在Python2.7上运行了这个;但这对我来说很有效,因为我总是在脚本之上有来自未来导入部门的。