Files
grum/grum/plotdesc.py
2023-04-18 13:43:30 +02:00

66 lines
1.8 KiB
Python

from pyqtgraph import DateAxisItem
from collections import deque
class PlotDescription:
def __init__(self, name, title=None, xlabel=None, ylabel=None, xs=None, ys=None, frmt=None):
self.name = name
self.title = title
self.xlabel = xlabel
self.ylabel = ylabel
self.xs = deque(maxlen = 5000) if xs is None else deque(xs, maxlen = 5000)
self.ys = deque(maxlen = 5000) if ys is None else deque(ys, maxlen = 5000)
self.format = frmt
@property
def data(self):
return (self.xs, self.ys)
@data.setter
def data(self, value):
self.xs, self.ys = value
def append(self, xy):
x, y = xy
self.xs.append(x)
self.ys.append(y)
def extend(self, data):
xs, ys = data
self.xs.extend(xs)
self.ys.extend(ys)
def make_plot(self, plotwidget, style):
# if self.format == "Line":
# res = plotwidget.plot(self.xs, self.ys, name=self.name, pen="r") #, **style)
# elif self.format == "Dots":
# print('Dots for positions')
# res = plotwidget.plot(self.xs, self.ys, name=self.name, pen=None, symbol="o") #, **style)
# else:
# res = plotwidget.plot(self.xs, self.ys, name=self.name, **style)
res = plotwidget.plot(self.xs, self.ys, name=self.name, **style)
if self.format == "time":
axis = DateAxisItem()
plotwidget.setAxisItems({'bottom':axis})
if self.title:
plotwidget.setTitle(self.title)
if self.xlabel:
plotwidget.setLabel("bottom", self.xlabel)
if self.ylabel:
plotwidget.setLabel("left", self.ylabel)
return res
def to_dict(self):
return {k: v for k, v in self.__dict__.items() if not k.startswith("_") and k != "name" and v is not None}