在matplotlib中关闭第一个图形后绘制新图形

2024-04-30 00:32:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个python脚本,其中在对象绘图仪中有以下方法:

import matplotlib.pyplot as plt
class Plotter:

   def __init__(self):
       self.nbfig = 0

   def plot(self):
       self.nbfig += 1
       plt.figure(self.nbfig)
       plt.plot(self.time, self.angle, 'b')
       plt.ion()
       plt.show()
< Python脚本是由一个实时C++应用程序调用的,只要它需要绘制某个东西(这就是为什么我在使用)血小板()以便绘图在其他线程中运行,并且不会停止c++应用程序) 但是,有时c++应用程序需要刷新应用程序并调用以下方法:

^{pr2}$

此方法有效地关闭了matplotlib窗口,我在其中绘制了角度。但是,当它第二次调用方法plot(上面定义的)时,不会绘制任何内容(出现一个空窗口)。在

看来打电话plt.关闭()影响matplotlib的所有行为(我尝试手动关闭窗口,脚本可以一个接一个地绘制不同的图形)

你遇到过这种问题吗?在

非常感谢你的帮助

最佳

文森特


Tags: 对象方法importself脚本应用程序plotmatplotlib
1条回答
网友
1楼 · 发布于 2024-04-30 00:32:14

我只添加了一行代码就解决了我的问题,所以我想分享我的解决方案,以防有人感兴趣。 问题来自于交互模式,它导致了奇怪的行为,因此在关闭窗口之前,我们需要关闭交互模式。代码现在如下所示:

def refresh(self):
    if (self.nbfig > 0): #meaning the c++ app already plotted a figure
        plt.ioff()
        plt.close()

现在我的脚本可以关闭一个窗口图,然后再绘制另一个窗口图。在

谢谢你的见解!在

文森特

相关问题 更多 >