2014-12-04 31 views
0

我將三個直方圖作爲Matplotlib中的子圖進行繪圖,並且每次都可以獲得相同數量的小節,但我始終生成不同的小節寬。如何讓每個子圖的條寬相等?我認爲sharex = True會這樣做,但顯然並非如此...將子圖中的直方圖條寬設置爲等於

謝謝!

f, axarr = plt.subplots(3, sharex=True, sharey=True) 
f.suptitle("Nearest Neighbor", fontsize=14) 

axarr[0].hist(actual_nn); 
axarr[0].set_title('Actual') 
axarr[1].hist(random_nn); 
axarr[1].set_title('Random')![enter image description here][1] 
axarr[2].hist(poisson_nn); 
axarr[2].set_title('Poisson') 

回答

1

問題是,每個bin根據數據在不同的位置開始。 當您調用直方圖時,您可以通過設置倉位從參數範圍開始的位置來解決此問題。 (不要被混淆的功能範圍())

import matplotlib.pyplot as plt 
import numpy as np 

#set value for testing 
actual_nn = np.random.randn(100) 
random_nn = np.random.randn(100) 
poisson_nn = np.random.randn(100) 

f, axarr = plt.subplots(3, sharex=True, sharey=True) 
f.suptitle("Nearest Neighbor", fontsize=14) 

axarr[0].hist(actual_nn, range = (-3,3)); # range parameter set the start and the end of the bin 
axarr[0].set_title('Actual') 
axarr[1].hist(random_nn, range = (-3,3)); 
axarr[1].set_title('Random') 
axarr[2].hist(poisson_nn, range = (-3,3)); 
axarr[2].set_title('Poisson') 

你可以在範圍參數這裏更多的信息:http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.hist

+0

啊是有道理的,是非常簡單的,謝謝! – John 2014-12-04 08:17:53

相關問題