import wx import matplotlib from matplotlib.figure import Figure from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas matplotlib.use('WXAgg') class FigComponent: def __init__(self, parent): self._parent = parent self._fig = Figure() self._fig_canvas = FigureCanvas(parent, -1, self._fig) self._sizer_vertical = wx.BoxSizer(wx.VERTICAL) self._sizer_vertical.Add(self._fig_canvas, 1, wx.EXPAND | wx.ALL, 0) self._parent.SetSizer(self._sizer_vertical) self._parent.Layout() @property def canvas(self): return self._fig def on_resize_cb(self, event): width, height = self._parent.GetClientSize() if width > 10 and height > 10: dpi = self._fig.get_dpi() self._fig.set_size_inches(width / dpi, height / dpi) self._fig_canvas.draw_idle() event.Skip() def update(self): self._fig_canvas.draw_idle() def clear(self): for ax in self._fig.axes: ax.clear()