2017-07-29 80 views
2

我正在試圖使一個筆記本,長循環產生的數據逐點放在圖中。但是,使用%matplotlib notebookfig.canvas.draw()時,該圖形很小,直到單元格完成運行。 (事實上​​,我有很多這樣的圖表,當使用更多的子圖時,它們甚至都是微不足道的。)Jupyter筆記本matplotlib數字顯示小,直到細胞完成

這裏我的代碼重現了jupyter筆記本中的行爲,至少在OS X上使用了(最新)jupyter-core 4.3.0和(最新)matplotlib 2.0.2。

%matplotlib notebook 
import time 
import matplotlib.pyplot as plt 

fig, ax = plt.subplots(1, 1) 
for _ in range(5): 
    ax.plot([1,2,3], [1,2,3]) 
    fig.canvas.draw() 
    time.sleep(1) 

在小區執行我得到這個情節

Small image

而當細胞執行完畢(5秒後)我得到這個

enter image description here

我想即使在單元執行期間也能獲得更大的圖像。我究竟做錯了什麼?

+0

當我運行代碼的情節不會改變大小(python 2.7,jupyter 4.4.1,matplotlib 2.0.2)。因此,我無法測試它是否有所作爲,但嘗試將for循環放入新單元格中。這樣,圖形首先以其全尺寸創建,並且只在動畫繼續的下一個單元格中創建。還要注意,爲了用matplotlib做動畫,你可以使用'FuncAnimation'。 – ImportanceOfBeingErnest

回答

1

正如ImportanceOfBeingErnest所提出的,一種解決方案是將圖形創建放入其自己的單元格中。

[1] %matplotlib notebook 
    import time 
    import matplotlib.pyplot as plt 

[2] fig, ax = plt.subplots(1, 1) 

[3] for _ in range(5): 
     ax.plot([1,2,3], [1,2,3]) 
     fig.canvas.draw() 
     time.sleep(1) 

編輯:如果您一次運行所有單元格,此解決方案不起作用。

+0

我會嘗試將這個問題帶給'matplotlib'開發者。我需要反覆使用這個功能,我一直在使用谷歌瀏覽器,並且無法找到正確的方法。 – Atcold