2009-12-21 124 views
7

我想根據從套接字連接接收到的y軸數據動態更新散點圖。我在交互模式下使用python matplot lib來做到這一點,但是在動態更新期間,如果我將窗口移動到不同的位置或最小化窗口,那麼繪圖更新會突然停止。這個怎麼做?matplotlib中的交互模式

我附上了一個在此使用的示例動態更新代碼,同樣的問題也出現在這裏。

import matplotlib.pyplot as plt 
import random 
import time 
items = [25.5,26.7,23.4,22.5,20,13.4,15.6,-12,-16,20] 
x = [1,2,3,4,5,6,7,8,9,10] 

plt.ion() # Interactive on 

for i in range(1,100): 
    plt.title('graph plotting') 
    plt.ylabel('temperature') 
    plt.xlabel('time') 
    random.shuffle(items) 
    plt.plot(x,items,'ob-') 
    plt.axis([0, 10, -40, 40]) 
    plt.draw() 
    #time.sleep(2) 
    plt.clf() 
    plt.close() 

回答

1

對於這個工作,你需要爲事件處理主循環,和自己的事件處理程序來重畫的情節時,調整大小或刷新窗口。

你會在網上或教程中找到很多這方面的例子。

我認爲這最好通過使用UI工具包(例如wxPython)來處理,而不是使用matplotlib交互模式。我過去有a similar question,並得到了一些很好的答案。

+0

感謝您的答案,我搜索了事件處理的例子,但無法找到它(我是Python的新手),請你給我鏈接到至少一個這樣的例子。 – Sharath

+0

@Sharath:你會在我鏈接的答案中找到鏈接。 – Ber

+0

@Ber:我的意思是matplot例子中的事件處理,而不是wxPython,比如我爲窗口最小化,移動到不同位置等等的事件。在此先感謝 – Sharath

3

This page包含了一些matplotlib和wxPython動態圖的例子。而here是PyQt的一個版本。