2012-08-01 40 views
6

我已經完成了搜索,但還沒有找到正確的解決方案來解決我的問題。我正在對一些我想繪製的數據進行循環。在循環的每一步 - 我用plt.show()繪製圖。但是,由於這是一個阻塞函數,所以我一直卡住,直到手動關閉窗口,然後循環繼續並顯示下一個圖。在matplotlib中的python和更新數字

我想要做的就是能夠綁定一個按鍵事件來關閉圖形並繼續循環(而不是使用鼠標將「X」移出圖)。

如果這是不可能的,我想設置一個計時器來關閉圖形並繼續循環。

我所有的問題似乎都是爲了處理plt.show()阻塞其他所有事情的方法 - 任何解決方法?

我的地塊上的一些註釋:它們使用相同的座標軸,但包含散點圖,填充框和註釋 - 它們總是在變化。

謝謝!

回答

4

嘗試使用ionmatplotlib.pyplot

import matplotlib.pyplot as pp 
pp.ion() 
fig = pp.figure() 

更多信息有關ion和交互與非交互式的使用here

或者,如果你想要去的按鈕按下的辦法分配回調

def moveon(event): 
    pp.close() 

cid = fig.canvas.mpl_connect('key_press_event', moveon) 
pp.show() 

事件計時器比較棘手,因爲show命令被阻塞,所以它可能不得不涉及線程。

+1

這是一個很好的答案。另外,你可以把它放到一個類似PyQT的GUI中,它可以讓你更好地控制和根據需要進行更新。 – TimothyAWiseman 2012-08-01 17:52:14

+0

這不適合我。我使用了與提供的完全相同的代碼,並且發生了奇怪的事情。發生的是所有的數字都是連續打開的(我沒有按下按鈕),他們沒有任何東西。此外,「不迴應」出現並關閉我的Python。 pp.ion()似乎會導致問題。幫幫我?? – mcfly 2012-08-01 19:03:46

+0

@mcfly:'ion()'選項意味着執行不會暫停 - 如果您想每次替換現有的圖,只調用一次'figure'。 – jmetz 2012-08-01 19:11:28