2012-05-24 27 views

Respuesta

31

Este es un ejemplo mínimo para un panel con un lienzo matplotlib:

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 
from matplotlib.figure import Figure 

import wx 

class CanvasPanel(wx.Panel): 
    def __init__(self, parent): 
     wx.Panel.__init__(self, parent) 
     self.figure = Figure() 
     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): 
     t = arange(0.0, 3.0, 0.01) 
     s = sin(2 * pi * t) 
     self.axes.plot(t, s) 


if __name__ == "__main__": 
    app = wx.PySimpleApp() 
    fr = wx.Frame(None, title='test') 
    panel = CanvasPanel(fr) 
    panel.draw() 
    fr.Show() 
    app.MainLoop() 

enter image description here

+3

Oye, ¿puedes escribir un n opción para establecer el tamaño del lienzo también? – aitchnyu

1

Definiendo el tamaño de la trama:

if __name__ == "__main__": 
    app = wx.App() 
    fr = wx.Frame(None, title='test', size=wx.Size(806, 450)) 
    panel = CanvasPanel(fr) 
    panel.draw() 
    fr.Show() 
    app.MainLoop() 

o definir el tamaño del panel:

class CanvasPanel(wx.Panel): 
    def __init__(self, parent): 
     wx.Panel.__init__(self, parent,size=wx.Size(806, 450)) 
... 
Cuestiones relacionadas