2
我想在每個draw()
操作上繪製一個新圖。我拼湊在一起code用於繪製一個靜態圖,這是從未更新創建對象後。但是我想要在提供新數據時能夠重繪。如何重繪wxpython面板中的mathplotlib圖形?
如何構建我的代碼來完成可重繪數字?
這裏是有問題的代碼,繪製恰好一次:
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()
你試圖重繪? –
我不知道如何實際進行 – aitchnyu
我不熟悉matplotlib,但如果你的問題只是你添加的新圖不顯示,FigueCanvas是否有某種類型的Refresh()方法?你有沒有試過調用它?如果沒有,你是否嘗試添加新圖後刷新面板(self.Refresh())?也許self.Layout()也可以工作(如果Layout()確實有幫助,我建議將「self.SetAutoLayout(True)」指定給init)。 – acattle