2009-12-21 123 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的一个版本。