2012-05-25 5 views
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() 
+0

다시 그리기를 시도한 적이 있습니까? –

+0

나는 실제로 진행할 방법을 모른다. – aitchnyu

+0

matplotlib에 익숙하지 않다.하지만 문제가 있다면 추가 한 새로운 플롯이 나타나지 않는다. FigueCanvas에 일종의 Refresh() 메소드가 있는가? 전화 해봤습니까? 그렇지 않다면 새 플롯을 추가 한 후 패널을 새로 고침 (self.Refresh()) 했습니까? 어쩌면 self.Layout() (레이아웃() 도움이된다면, init "self.SetAutoLayout (True)"assass 것이 좋습니다). – acattle

답변

2

@acattle 그의 주석에서 제안한 것처럼 : 여기


은 정확히 한 번 그립니다, 문제의 코드입니다 플롯 업데이트 :

self.canvas.draw() 
self.canvas.Refresh() 
관련 문제