Python Matplotlib在单独的帧中生成图形,

Python Matplotlib在单独的帧中生成图形,,python,matplotlib,plot,wxpython,Python,Matplotlib,Plot,Wxpython,我有一个GUI,它显示了一些不同的图形/绘图。起初,a遇到了一个问题,我通过将plt.draw()更改为plt.show解决了这个问题。现在,当我运行脚本时,它似乎正在创建并在自己的帧中显示图形,然后在我连续关闭这些帧后,我的GUI会弹出所有图形,并按照我所希望的方式实时更新,但我想去掉第一个出现的帧。我一直在找,但没有找到这方面的任何东西 现在这是我的代码,绘制并嵌入到面板中。我所做的是调用此代码并将其添加到其工具下方gui中的笔记本中 class plot_面板(wx.panel): 定义初

我有一个GUI,它显示了一些不同的图形/绘图。起初,a遇到了一个问题,我通过将
plt.draw()
更改为
plt.show
解决了这个问题。现在,当我运行脚本时,它似乎正在创建并在自己的帧中显示图形,然后在我连续关闭这些帧后,我的GUI会弹出所有图形,并按照我所希望的方式实时更新,但我想去掉第一个出现的帧。我一直在找,但没有找到这方面的任何东西

现在这是我的代码,绘制并嵌入到面板中。我所做的是调用此代码并将其添加到其工具下方gui中的笔记本中

class plot_面板(wx.panel):
定义初始化(自、父、模型、x、y、标题):
wx.Panel.\uuuuu init\uuuuuuuuuuuux(自,父)
sns.set()
self.title=标题
self.line_width=1
self.figure=plt.figure(图大小=(18,3))
self.canvas=FigureCanvas(self,0,self.figure)
self.axis=self.figure.add_子图(1,1,1)
self.toolbar=导航工具栏(self.canvas)
self.toolbar.Realize()
sizer=wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.canvas,0,wx.EXPAND)
sizer.Add(self.toolbar,0,wx.LEFT | wx.EXPAND)
自整定器(施胶器)
self.x_轴=[]
self.y_轴=[]
ani=animation.FuncAnimation(self.figure,self.animate,fargs=(self.x_轴,self.y_轴,模型,x,y),间隔=500)
plt.show(块=假)
定义动画(自身、i、x_轴、y_轴、模型、x、y):
将会话_scope()作为s:
value=s.query(y).order_by(model.Datetime.desc()).first()
time=s.query(x).order_by(model.Datetime.desc()).first()
如果类型(时间)!=类型(无)或类型(值)!=类型(无):
时间=时间[0]
值=值[0]
值=四舍五入(值,2)
x_轴追加(时间)
y_轴追加(值)
x_轴=x_轴[-1800:]
y_轴=y_轴[-1800:]
self.axis.clear()
self.axis.annotate(str(value),xy=(time,value),xytext=(10,-3),textcoords='offset pixels',
bbox=dict(boxstyle=custom\u-box\u-style,alpha=0.2))
self.axis.set_title(self.title)
自轴设置(最小(x轴)、最大(x轴)+时间增量(秒=0.01))
self.axis.set_xlabel(x.name)
self.axis.set_ylabel(y.name)
self.axis.plot(x\u轴,y\u轴,线宽=self.line\u宽度)
#格式图
plt.子批次调整(左=0.2,右=0.85,顶部=0.92,底部=0.2,wspace=1)
我就是这样称呼他们的

self.plot = ploting.plot_panel(self.plot_notebook, hygrometer_model, hygrometer_model.Datetime, hygrometer_model.H20_concentration, 'H20 Concentration vs Datetime')
self.plot_0 = ploting.plot_panel(self.plot_notebook, hygrometer_model, hygrometer_model.Datetime, hygrometer_model.total_pressure, 'Total Pressure vs Datetime')
self.plot_1 = ploting.plot_panel(self.plot_notebook, hygrometer_model, hygrometer_model.Datetime, hygrometer_model.temperature, 'Temperature vs Datetime')

self.plot_notebook.AddPage(self.plot, hygrometer_model.H20_concentration.name)
self.plot_notebook.AddPage(self.plot_0, hygrometer_model.total_pressure.name)
self.plot_notebook.AddPage(self.plot_1, hygrometer_model.temperature.name)

我不确定,因为您的代码在其当前状态下不可运行,但您应该避免将pyplot接口与面向对象接口混合使用()


如果您参考,它将向您展示如何直接使用OO对象。您会注意到,任何地方都没有
plt.show()

给我们看一些代码,我们可以帮助您,我们需要一个,pelase。@谢谢您的注意。我已经添加了绘图类中的代码,以及如何将它们调用到笔记本中。