2017-08-02 16 views
1

我有一個2D數組的列表,我使用matplotlib的滑塊繪製它們。
我添加了一些控制按鈕到我的情節,所以我想單擊一個play按鈕,並且情節隨着一段時間間隔而改變。
下面是由按鈕調用的函數:Python - 基於定時器的更新圖形

def play(mouse_event):  
    for x in range(len(listOfMoments)): 
     image.set_data(listOfMoments[x]) 
     time.sleep(0.5) 
     print(x) 

print(x)表明,X通常是越來越多,但是,它只能繪製在列表的最後一個陣列,增量結束之後。 我的問題是:我如何才能讓它一個一個地繪製數組,如預期的那樣?

我還應該提到,我嘗試了while循環,並得到了相同的結果。

回答

1

你需要告訴後端通過循環改變數據以後每次更新數字:

fig.canvas.draw() 

這裏的documentation reference

如果您沒有對Figure對象的引用,則可以使用fig = plt.gcf()來檢索它。

+0

那是缺少的。我剛剛添加了'fig.canvas.draw()',它工作。非常感謝! – philippos

+0

您也可以使用具有回叫而不是睡眠的計時器,以便在延遲期間保持交互性。請參閱https://matplotlib.org/examples/event_handling/timers.html –