chore: изменил структуру описания виджетов осциллографа

This commit is contained in:
Андрей Скирченко 2024-11-14 21:39:44 +03:00
parent 3eb030cb2d
commit ed9cda81cb
2 changed files with 62 additions and 45 deletions

View File

@ -101,48 +101,61 @@ class BasePlotWidget:
"Welding"
]
self._plot_channels = {
"Electrode Force, N & Welding Current, kA": [
{
"name": "Electrode Force, N ME",
"pen": 'r',
"zoom": False
self._plt_channels = {
"Electrode Force, N & Welding Current, kA": {
"Settings": {
"zoom": False,
"stages": True
},
{
"name":"Electrode Force, N FE",
"pen": 'w',
"zoom": False
"Signals": [
{
"name": "Electrode Force, N ME",
"pen": 'r',
},
{
"name": "Electrode Force, N FE",
"pen": 'w',
},
{
"name": "Welding Current ME",
"pen": "y",
}
]
},
"Electrode Force, N": {
"Settings": {
"zoom": True,
"stages": False
},
{
"name": "Welding Current ME",
"pen": "y",
"zoom": False
}
],
"Electrode Force, N": [
{
"name": "Electrode Force, N ME",
"pen": 'r',
"zoom": True
"Signals": [
{
"name": "Electrode Force, N ME",
"pen": 'r',
},
{
"name": "Electrode Force, N FE",
"pen": 'w',
}
]
},
"Electrode Speed, mm/s": {
"Settings": {
"zoom": False,
"stages": True
},
{
"name": "Electrode Force, N FE",
"pen": 'w',
"zoom": True
},
],
"Electrode Speed, mm/s": [
{
"name": "Rotor Speed, mm/s ME",
"pen": 'r',
"zoom": False
},
{
"name": "Rotor Speed, mm/s FE",
"pen": 'w',
"zoom": False
},
]
"Signals": [
{
"name": "Rotor Speed, mm/s ME",
"pen": 'r',
"zoom": False
},
{
"name": "Rotor Speed, mm/s FE",
"pen": 'w',
"zoom": False
}
]
},
}
@property

View File

@ -7,27 +7,31 @@ from base.base import BasePlotWidget
class PlotWidget(BasePlotWidget):
def _draw_stages(self, dataframe: pd.DataFrame) -> None:
...
def _create_widget(self, dataframe: pd.DataFrame) -> QWidget:
widget = QWidget()
layout = QVBoxLayout()
time_axis = dataframe["time"]
print(max(time_axis))
dataframe_headers = dataframe.columns.tolist()
for channel, signals in self._plot_channels.items():
for channel, description in self._plt_channels.items():
plot_widget = pg.PlotWidget(title=channel)
plot_widget.showGrid(x=True, y=True)
legend = pg.LegendItem((80, 60), offset=(70, 20))
legend.setParentItem(plot_widget.graphicsItem())
settings = description["Settings"]
for signal in signals:
if signal["name"] in dataframe.columns.tolist():
for signal in description["Signals"]:
if signal["name"] in dataframe_headers:
plot = plot_widget.plot(time_axis, dataframe[signal["name"]], pen=signal["pen"])
if signal["zoom"] and max(time_axis) < 5.0:
legend.addItem(plot, signal["name"])
if settings["zoom"] and max(time_axis) < 5.0:
max_value = max(dataframe[signal["name"]])
plot_widget.setYRange(max_value - 200, max_value)
plot_widget.setInteractive(False)
legend.addItem(plot, signal["name"])
layout.addWidget(plot_widget)