2013-04-05 86 views
11

pyplot.hist() documentation指定當爲直方圖設置範圍「忽略較低和較高異常值」使pyplot.hist()第一個和最後一個bin包含異常值

是否可以使直方圖的第一個和最後一個bin包含所有異常值而不改變bin的寬度

例如,假設我想查看範圍0-3,其中包含3個分檔:0-1, 1-2, 2-3(爲簡單起見,我們忽略精確相等的情況)。我希望第一個bin將負的所有值都包含到1,最後一個bin包含從2到無窮大的所有值。但是,如果我明確設置這些分箱以跨越此範圍,則它們將非常寬。我希望他們有相同的寬度。我正在尋找的行爲就像在Matlab中的hist()的行爲。

顯然我可以numpy.clip()的數據和情節,這會給我我想要的。但是,如果有內置解決方案,我很感興趣。

+4

聽起來像是你有一個兩行的解決方案('numpy.clip(); pyplot.hist()'),你會想要一個班輪。雖然我猜''hist'的'clip'關鍵字會很好,但我認爲沒有人會因爲它非常基本而困擾它。當然,你可以隨時向matplotlib提交一個補丁:-)。 – Evert 2013-04-05 15:46:07

+1

是的,@Evert是正確的,剪輯是最好的解決方案。我會說'pyplot.hist()'不會建立這個可能是因爲它會產生誤導的情節,如果沒有仔細註釋。 – askewchan 2013-04-05 16:22:00

+0

@Evert好的,謝謝。我只是想看到我不會錯過一些更好的解決方案來獲得這種行爲。 – Bitwise 2013-04-05 21:12:25

回答

6

不,看着matplotlib.axes.Axes.hist和直接使用numpy.histogram我相當有信心說沒有比使用剪輯更聰明的解決方案(除了擴展你的直方圖)。

我會鼓勵你看看matplotlib.axes.Axes.hist源(這只是Python代碼,但無可否認HIST稍微複雜一點比大多數的軸方法) - 這是驗證這種問題的最佳途徑。

HTH

相關問題