Source code for pylablib.core.gui.qt.widgets.plot

from matplotlib.backends.qt_compat import is_pyqt5
if is_pyqt5():
    from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg, NavigationToolbar2QT as NavigationToolbar
else:
    from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg, NavigationToolbar2QT as NavigationToolbar

from PyQt5 import QtWidgets

import matplotlib.pyplot as mpl
import time

[docs]class MPLFigureCanvas(FigureCanvasQTAgg): """ Simple widget wrapper for MPL plotting canvas. """ def __init__(self, parent=None): FigureCanvasQTAgg.__init__(self,mpl.Figure()) if parent: self.setParent(parent) self.redraw_period=0.01 self._last_draw_time=None
[docs] def redraw(self, force=False): """ Replot the data. If ``force==False``, and less than ``self.redraw_period`` (10ms by default) passed since the last replot event, do nothing. """ t=time.time() if force or (not self._last_draw_time) or (self._last_draw_time+self.redraw_period<=t): self.draw_idle() self._last_draw_time=t
[docs]class MPLFigureToolbarCanvas(QtWidgets.QWidget): """ Simple widget wrapper for MPL plotting canvas with the toolbar (for plot zooming/panning) """ def __init__(self, parent=None): QtWidgets.QFrame.__init__(self,parent) self.layout=QtWidgets.QVBoxLayout(self) self.canvas=MPLFigureCanvas(self) self.layout.addWidget(self.canvas) self.figure=self.canvas.figure self.toolbar=NavigationToolbar(self.canvas,self) self.layout.addWidget(self.toolbar) @property def redraw_period(self): """Set redraw period""" return self.canvas.redraw_period @redraw_period.setter def redraw_period(self, value): """Get redraw period""" self.canvas.redraw_period=value
[docs] def redraw(self, force=False): """ Replot the data. If ``force==False``, and less than ``self.redraw_period`` (10ms by default) passed since the last replot event, do nothing. """ self.canvas.redraw(force=force)