2016-11-26 95 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')