Embedding a matplotlib figure inside a WxPython panel Embedding a matplotlib figure inside a WxPython panel python python

Embedding a matplotlib figure inside a WxPython panel


This is a minimal example for a Panel with a matplotlib canvas:

from numpy import arange, sin, piimport matplotlibmatplotlib.use('WXAgg')from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvasfrom matplotlib.backends.backend_wx import NavigationToolbar2Wxfrom matplotlib.figure import Figureimport wxclass 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


Defining the frame size:

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()

or defining the panel size:

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