8

我想根据从套接字连接接收到的 y 轴数据动态更新散点图。我在交互模式下使用 python matplot lib 来执行此操作,但是在动态更新期间,如果我将窗口移动到不同的位置或最小化窗口,那么绘图更新会突然停止。这个怎么做?

我附上了此处使用的示例动态更新代码,同样的问题也出现在此处。

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()
4

2 回答 2

4

此页面包含几个使用 matplotlib 和 wxPython 进行动态绘图的示例。这是一个带有 PyQt 的版本

于 2009-12-21T16:01:22.190 回答
2

为此,您需要有一个用于事件处理的主循环,以及您自己的事件处理程序以在调整窗口大小或刷新时重绘绘图。

您会在网络上或教程中找到许多这方面的示例。

我认为最好使用 UI 工具包(例如wxPython)来处理,而不是使用 matplotlib 交互模式。我过去有一个类似的问题,并得到了一些很好的答案。

于 2009-12-21T15:27:25.833 回答