猿问

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

我正在使用python脚本在对象Plotter中使用以下方法:


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

实时C ++应用程序在需要绘制某些内容时会调用python脚本(这就是为什么我使用plt.ion()以便绘图在不同的线程中运行并且不会停止c ++应用程序)的原因,有时c ++应用程序需要刷新应用程序并调用以下方法:


def refresh(self):

    if (self.nbfig > 0): #meaning the c++ app already plotted a figure

        plt.close()

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


似乎调用plt.close()会影响matplotlib的所有行为(我尝试手动关闭窗口,并且脚本能够一个接一个地绘制不同的图)


您是否遇到过此类问题?


幕布斯6054654
浏览 244回答 1
1回答

一只斗牛犬

我只添加了一行代码就解决了我的问题,所以我想分享我的解决方案,以防万一有人感兴趣。问题来自交互模式,这导致了奇怪的行为,因此在关闭窗口之前,我们需要关闭交互模式。现在的代码如下所示:def refresh(self):    if (self.nbfig > 0): #meaning the c++ app already plotted a figure        plt.ioff()        plt.close()现在,我的脚本可以关闭一个窗口图形,然后再绘制另一个图形。
随时随地看视频慕课网APP

相关分类

Python
我要回答