fig_component.py 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import wx
  2. import matplotlib
  3. from matplotlib.figure import Figure
  4. from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
  5. matplotlib.use('WXAgg')
  6. class FigComponent:
  7. def __init__(self, parent):
  8. self._parent = parent
  9. self._fig = Figure()
  10. self._fig_canvas = FigureCanvas(parent, -1, self._fig)
  11. self._sizer_vertical = wx.BoxSizer(wx.VERTICAL)
  12. self._sizer_vertical.Add(self._fig_canvas, 1, wx.EXPAND | wx.ALL, 0)
  13. self._parent.SetSizer(self._sizer_vertical)
  14. self._parent.Layout()
  15. @property
  16. def canvas(self):
  17. return self._fig
  18. def on_resize_cb(self, event):
  19. width, height = self._parent.GetClientSize()
  20. if width > 10 and height > 10:
  21. dpi = self._fig.get_dpi()
  22. self._fig.set_size_inches(width / dpi, height / dpi)
  23. self._fig_canvas.draw_idle()
  24. event.Skip()
  25. def update(self):
  26. self._fig_canvas.draw_idle()
  27. def clear(self):
  28. for ax in self._fig.axes:
  29. ax.clear()