为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

幕布斯6054654 2021-03-31 17:05:21
我正在使用python脚本在对象Plotter中使用以下方法:import matplotlib.pyplot as pltclass 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的所有行为(我尝试手动关闭窗口,并且脚本能够一个接一个地绘制不同的图)您是否遇到过此类问题?
查看完整描述

1 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

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


def refresh(self):

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

        plt.ioff()

        plt.close()

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


查看完整回答
反对 回复 2021-04-01
  • 1 回答
  • 0 关注
  • 242 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信