crds_analyzer/widgets.py

53 lines
1.5 KiB
Python

from PyQt5 import QtWidgets
import matplotlib
matplotlib.use('Qt5Agg')
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg, NavigationToolbar2QT as NavigationToolbar
from matplotlib.figure import Figure
from memdb import mem
class MplCanvas(FigureCanvasQTAgg):
def __init__(self, parent=None, width=5, height=4, dpi=100):
fig = Figure(figsize=(width, height), dpi=dpi)
self.axes = fig.add_subplot(111)
fig.tight_layout()
super(MplCanvas, self).__init__(fig)
class BaseGraph(QtWidgets.QWidget):
"""
Widget with embedded matplotlib graph & navigation toolbar
Reference: https://www.mfitzp.com/tutorials/plotting-matplotlib/
"""
canv = None
def __init__(self, x):
super().__init__(x)
self.canv = MplCanvas(self)
# Example
# canv.axes.plot([0,1,2,3,4], [10,1,20,3,40])
toolbar = NavigationToolbar(self.canv, self)
layout = QtWidgets.QVBoxLayout()
layout.addWidget(toolbar)
layout.addWidget(self.canv)
self.setLayout(layout)
def plot_data(self):
self.canv.axes.plot(mem['x_data'], mem['y_data'])
def plot(self):
self.canv.axes.clear()
self.plot_data()
self.canv.draw()
print("attempted plot")
class RawDataGraph(BaseGraph):
pass
class PeaksGraph(BaseGraph):
def plot_data(self):
for i in mem['groups_correlated']:
self.canv.axes.plot(i)
class TimeConstantGraph(BaseGraph):
pass # no modifications thus far