Matplotlib中的交互模式

8

我希望根据从套接字连接接收到的y轴数据动态更新散点图。我使用Python 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()
2个回答

4

这个页面 包含了一些使用matplotlib和wxPython创建动态图表的示例。而这里是一个使用PyQt的版本。


2
为了使这个工作正常,你需要有一个主循环来处理事件,并且自己编写事件处理程序,在窗口大小调整或刷新时重绘图形。
你可以在网上或教程中找到许多关于此的例子。
我认为最好使用 UI 工具包(例如 wxPython),而不是使用 matplotlib 的交互模式。我之前也有类似的问题,得到了一些很好的答案。

谢谢您的回答,我搜索了事件处理的示例但找不到(我是Python的新手),您可以发送至少一个这样的示例链接给我吗? - Sharath
@Sharath:您会在我提供的答案中找到链接。 - Ber
@Ber:我的意思是Matplotlib示例中的事件处理,而不是wxPython,比如我在窗口最小化时会得到哪些事件,移动到其他位置等等。提前谢谢。 - Sharath
@Sharait:抱歉,我无法帮助你,因为我只在wxPython中使用matplotlib,而不是单独使用。 - Ber

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接