2012-12-06 71 views
3

我產生下面以一個電話的身影matplotlib.pyplot.hist中,我通過了kwarg normed=True如何規格化直方圖,使高度之和等於1?

enter image description here

經進一步研究,我意識到,這種標準化的這樣的作品是的積分直方圖等於1.我如何繪製相同的數據以使條的高度之和等於1?

換句話說,我希望每一位代表它的值包含的整體比例。

回答

3

我不知道是否有一個簡單的方法,但 您可以手動輸入的長度除以所有酒吧的高度(以下是ipython --pylab做出跳過進口):

inp = normal(size=1000) 
h = hist(inp) 

它給你

enter image description here

現在,你可以這樣做:

bar(h[1][:-1], h[0]/float(len(inp)), diff(h[1])) 

,並得到

enter image description here

+0

謝謝!你能解釋一下'hist'返回的元組中的每個元素是什麼?你的bar(h [1] [: - 1],h [0]/float(len(inp)),diff(h [1]))'讓我有些困惑! – blz

+0

@blz ['hist'](http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.hist)返回'heights'和'x points'作爲元組的前兩個元素。 ['bar'](http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.bar)將'left'和'top'作爲前兩個參數。 –

+0

謝謝!我在我的數據上運行了你的代碼,但我似乎沒有得到一個規格化的直方圖=/[這裏](https://dl.dropbox.com/u/6160029/normR.pickle)是數據(PANDAS DataFrame對象)和[這裏](http://www.hastebin.com/ponagaciji.py)是我使用的代碼。此外,[這裏](https://dl.dropbox.com/u/6160029/normHist_fail.png)是我得到的圖表。任何想法我做錯了嗎? – blz

相關問題