2014-05-10 113 views
1
def vs_time(data): #MUBASHWER, histogram 
    clf() 
    hist(data.keys(), bins = 12, weights = data.values()) 
    xticks(arange(0,24,2)) 
    xlabel('Time') 
    ylabel('Number of fatalities') 
    title('Number of Fatalities vs Time') 
    webshow('vs_time.png') 

直方圖:enter image description hereMatplotlib直方圖對齊

我想在x軸上的時間是在每個棒的左邊緣。但他們既不在中心,也不在任何邊緣。請幫忙。如果直方圖可以在不改變軸的情況下穿上襯衫,問題就可以解決。

回答

2

這很明顯是因爲生成的直方圖的bin邊緣不僅僅是偶數0,2,4 .... 22。

要獲得期望的結果,簡單地利用bins=參數和,即,:

plt.hist(YOUR_DATA,bins=arange(0,24,2)) #for bin edge 0,2,4...,22, as in your figure. 
+0

謝謝你,它的工作原理。如果沒關係,你能解釋爲什麼會出現這種情況嗎? – user3623449

+0

當然,當你不指定'bin'時,邊將自動確定;當你用'int'指定'bins'時,邊將由數據的分佈方式決定。無論是哪種情況,都無法保證邊緣會落在您想要的確切值上。因此,直接的方法是將'bins'指定給包含邊的'array'。 –

+0

謝謝!我現在知道了。 – user3623449