2014-01-05 45 views
8

我想要做的事似乎相當直接,但我有一段時間試圖讓它工作。我只是試圖使用imshow繪製圖像,然後在新數據到達時定期重新繪製圖像。如何使用python的matplotlib重繪圖片?

我已經開始了這一點:

fig = figure() 
ax = plt.axes(xlim=(0,200),ylim=(0,200)) 
myimg = ax.imshow(zeros((200,200),float)) 

然後我假設我可以調用set_data這樣的更新映像:

myimg.set_data(newdata) 

我試過很多其他的事情,例如我撥打了ax.imshow(newdata),或者我嘗試了在set_data()之後使用figure.show()

回答

10

你可以在你每次追加新的東西時簡單地調用figure.canvas.draw()。這將刷新情節。

from matplotlib import pyplot as plt 

f = plt.figure() 
ax = f.gca() 
f.show() 

for i in range(10): 
    ax.plot(i, i, 'ko') 
    f.canvas.draw() 
    raw_input('pause : press any key ...') 
f.close() 
+1

這讓我更近了一步。當我運行上面的代碼時,它會在執行開始時打開一個圖形,並且只在執行結束時繪製最終的圖形(而不是每次點擊返回時都會出現一個點)。我在Windows 7上運行python 2.7,如果這有什麼後果的話。 – kjgregory

+0

我不知道。我已經測試它在Linux和Windows7上,它的工作原理。這可能來自你的matplotlib版本。我相信不同版本的語法可能會有所不同。我正在使用matplotlib 1.2.0 – user2660966

+0

我發現如果你在那裏做一個plt.pause(),它會讓這個圖有機會在繼續執行之前重繪。插入等待的其他方法不這樣做。 – kjgregory