我正在使用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()
现在,我的脚本可以关闭一个窗口图形,然后再绘制另一个图形。
添加回答
举报
0/150
提交
取消