2017-02-23 120 views
2

我繪製的直方圖,我發現這個堆棧交換偉大的工程: histogram for discrete valuesmatplotlib.pyplot.hist()如果bin的大小太大,就會掛起?

這裏是貼有代碼:

import matplotlib.pyplot as plt 
import numpy as np 

data = range(11) 
data = np.array(data) 

d = np.diff(np.unique(data)).min() 
left_of_first_bin = data.min() - float(d)/2 
right_of_last_bin = data.max() + float(d)/2 
plt.hist(data, np.arange(left_of_first_bin, right_of_last_bin + d, d)) 
plt.show() 

我使用它的情況下d = 2.84e- 5,那麼上面的np.arrange()的輸出是68704的長度。如果我在ubuntu 14.04上從anaconda環境中運行python解釋器(python 3.5),系統會掛起,如果沒有ctrl-c會導致系統崩潰,我無法恢復。我想知道在plt.hist()中bin的大小是否有限制,或者這種方法有什麼內在的錯誤。如果有限制,我會期待一個錯誤,而不是一個掛起。如果d不是太小,代碼工作正常。我的數據的長度也可能會影響到這一點,它是22289.我想它可能只是攪動,我沒有等待足夠長的時間?

我搜索了matplotlib.pyplot.hist的限制和其他變化,找不到任何東西。我能告訴我的文件沒有提到限制。謝謝。

回答

2

看起來好像沒有真正的掛起。由於數據非常龐大而且容器的寬度如此之小,這只是永遠需要的。我注意到在d = .001的情況下,我的機器花了大約30秒來渲染圖。對不起,我認爲我發現了一個潛在的錯誤,作爲一個新手興奮。