def plotbars(hists, bins, labels, filename):
plt.figure()
center = (bins[:-1] + bins[1:]) / 2
width = 0.7 * (bins[1] - bins[0])
for hist in hists:
plt.bar(center, hist, align='center', width=width)
plt.legend(labels)
plt.savefig(filename)
如果我绘制像plotbars([hist1, hist2], bins, ['hist1', 'hist2'], 'histo.png')
这样的直方图,则会将直方图绘制在彼此之上。我希望直方图的条形相邻。每个的bin宽度相等。
答案 0 :(得分:1)
尝试使用plt.hist而不是plt.bar。
hist1=[x for x in range(0,10)]*10
hist2= [x for x in range(0,10)]*2
plt.hist([hist1,hist2],bins = 10)
产生此图像:
这是您希望看到图表的方式吗?
更新
可以使用以下方法正确格式化x轴。
bin_list = [x for x in range(0,11) ]
plt.hist([hist1,hist2], bins=bin_list ,align='left')
产生适当间隔的x轴。出于某种原因,似乎必须将箱子设置为适当间隔x值的列表。
https://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.xticks
如需进一步调整,您可以尝试使用plt.xticks()。