如何在wxpython面板中重画mathplotlib图形?
我想在each如何在wxpython面板中重画mathplotlib图形?,python,wxpython,matplotlib,Python,Wxpython,Matplotlib,我想在eachdraw()操作上绘制一个新图形。我拼凑起来画了一个静态图形,它在对象创建后从未更新过。但我希望在呈现新数据时能够重新绘制 如何构造代码以生成可重绘图形 下面是正在讨论的代码,它只绘制了一次: from numpy import arange, sin, pi import matplotlib matplotlib.use('WXAgg') from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as F
draw()操作上绘制一个新图形。我拼凑起来画了一个静态图形,它在对象创建后从未更新过。但我希望在呈现新数据时能够重新绘制
如何构造代码以生成可重绘图形
下面是正在讨论的代码,它只绘制了一次:
from numpy import arange, sin, pi
import matplotlib
matplotlib.use('WXAgg')
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
from matplotlib.backends.backend_wx import NavigationToolbar2Wx
class CanvasPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
#self.size = (800, 50)
self.figure = Figure()
self.figure.set_size_inches( (8,1) )
self.figure.set_dpi(80)
#self.axes = self.figure.add_subplot(111)
self.canvas = FigureCanvas(self, -1, self.figure )
self.sizer = wx.BoxSizer(wx.VERTICAL)
self.sizer.Add(self.canvas, 1, wx.LEFT | wx.TOP | wx.GROW)
self.SetSizer(self.sizer)
self.Fit()
def draw(self):
self.axes = self.figure.add_subplot(111)
t = arange(0.0, 3.0, 0.01)
s = sin(2 * pi * t)
self.axes.plot(t, s)
#time.sleep(5)
#self.figure.clear()
正如@acattle在其评论中所建议的,在更新绘图后,您所要做的就是将这些线添加到绘图子例程中:
self.canvas.draw()
self.canvas.Refresh()
你试图重画什么?我不知道如何进行我不熟悉matplotlib,但是如果你的问题只是你添加的新绘图没有显示,FigueCavains是否有某种Refresh()方法?你试过叫它吗?如果没有,是否在添加新绘图后尝试刷新面板(self.Refresh())?也许self.Layout()也会起作用(如果Layout()确实有用,我建议将“self.SetAutoLayout(True)”分配给init)-