2017-07-04 156 views
0
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'),這將直方圖繪製在彼此之上。我想要直方圖的條形圖相鄰。每個箱子的寬度都相等。繪製matplotlib中的多個條形圖

+0

你能提供一個「hists」是什麼的例子嗎? – DavidG

+0

'np.histogram()'的輸出' – canonball

+0

如果您可以提供[最小,完整和可驗證的示例](http://stackoverflow.com/help/mcve),對我們來說會更容易。 – DavidG

回答

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) 

息率這一形象:

enter image description here

這是你想怎麼看你的圖形?

更新:

x軸可以正確使用以下格式進行格式化。

bin_list = [x for x in range(0,11) ] 
plt.hist([hist1,hist2], bins=bin_list ,align='left') 

產生適當間隔的x軸。出於某種原因,出現的箱子必須設置爲適當的x值間距列表。

enter image description here

https://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.xticks

如需進一步調整,你可以嘗試玩弄plt.xticks()。

+0

是的,我想要一張看起來像這樣的圖表。但是,如何正確地繪製'x'軸? – canonball

+0

有人給這個男人一個餅乾 - 非常感謝 –