2016-11-26 118 views
0

我想繪製幾個直方圖,但有時箱子比其他箱子大。我無法解釋爲什麼我獲得了......你可以在下面看到一個情節,紅色箱子比其他人有很大的寬度。我的代碼顯示在圖Python - Matplotlib多直方圖

enter image description here

import matplotlib as mpl 
font = {'family':'serif','serif':'serif','weight':'normal','size':'18'} 
mpl.rc('font',**font) 
mpl.rc('text',usetex=True) 

plt.close() 
plt.subplots_adjust(left=0.15, bottom=0.15) 
num_bins = 50 

n, bins, patches = plt.hist(A, num_bins, facecolor='blue', alpha=0.5, label='Healthy SG') 

n, bins, patches = plt.hist(B, num_bins, facecolor='red', alpha=0.5, label='Aged SG') 

n, bins, patches = plt.hist(C, num_bins, facecolor='yellow', alpha=0.5, label='Healthy VG') 

n, bins, patches = plt.hist(D, num_bins, facecolor='green', alpha=0.5, label='Aged VG') 

plt.ylim(0.,10.) 
plt.tick_params(axis='both', which='major', labelsize=14) 
plt.grid(True) 
plt.legend(loc=2, fontsize= 16) 

plt.show() 

回答

2

低於當您使用bins=num_bins,每次調用plt.hist決定在倉邊緣應獨立。每次調用都會嘗試選擇適合傳遞數據的倉邊。隨着數據的變化,垃圾箱邊緣也會發生變化。

爲了使裝倉寬度不變,則需要斌同樣明確的陣列邊緣給每個呼叫傳遞給plt.hist

num_bins = 50 
data = np.concatenate([A,B,C,D]) 
min_data, max_data = data.min(), data.max() 
bins = np.linspace(min_data, max_data, num_bins) 
plt.hist(A, bins=bins, facecolor='blue', alpha=0.5, label='Healthy SG') 
plt.hist(B, bins=bins, facecolor='red', alpha=0.5, label='Aged SG') 
plt.hist(C, bins=bins, facecolor='yellow', alpha=0.5, label='Healthy VG') 
plt.hist(D, bins=bins, facecolor='green', alpha=0.5, label='Aged VG')