x axis change
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from matplotlib.backends.backend_qtagg import FigureCanvasQTAgg
|
||||
from matplotlib.backends.backend_qtagg import FigureCanvasQTAgg, NavigationToolbar2QT
|
||||
from matplotlib.figure import Figure
|
||||
from PySide6.QtWidgets import QVBoxLayout, QWidget
|
||||
|
||||
@@ -12,31 +12,35 @@ class SimulationPlotWidget(QWidget):
|
||||
super().__init__(parent)
|
||||
self.figure = Figure(layout="constrained")
|
||||
self.canvas = FigureCanvasQTAgg(self.figure)
|
||||
self.toolbar = NavigationToolbar2QT(self.canvas, self)
|
||||
self.axes = self.figure.add_subplot()
|
||||
layout = QVBoxLayout(self)
|
||||
layout.setContentsMargins(0, 0, 0, 0)
|
||||
layout.addWidget(self.toolbar)
|
||||
layout.addWidget(self.canvas)
|
||||
|
||||
def set_plot(self, results: list[SimulationResult], signals: list[str]) -> None:
|
||||
def set_plot(self, results: list[SimulationResult], signals: list[str], x_axis: str | None = None) -> None:
|
||||
self.axes.clear()
|
||||
for signal in signals:
|
||||
times: list[float] = []
|
||||
x_values: list[float] = []
|
||||
values: list[float] = []
|
||||
sample_offset = 0
|
||||
for result in results:
|
||||
result_values = result.data.get(signal)
|
||||
if result_values is None:
|
||||
continue
|
||||
result_times = result.data.get("time")
|
||||
if result_times is not None and len(result_times) == len(result_values):
|
||||
times.extend(result_times)
|
||||
result_x = result.data.get(x_axis or "time")
|
||||
if result_x is not None and len(result_x) == len(result_values):
|
||||
x_values.extend(result_x)
|
||||
elif x_axis is not None:
|
||||
continue
|
||||
else:
|
||||
times.extend(range(sample_offset, sample_offset + len(result_values)))
|
||||
x_values.extend(range(sample_offset, sample_offset + len(result_values)))
|
||||
values.extend(result_values)
|
||||
sample_offset += len(result_values)
|
||||
if values:
|
||||
self.axes.plot(times, values, label=signal)
|
||||
self.axes.set_xlabel("Time")
|
||||
self.axes.plot(x_values, values, label=signal)
|
||||
self.axes.set_xlabel(x_axis or "Time")
|
||||
self.axes.grid(True)
|
||||
if self.axes.lines:
|
||||
self.axes.legend()
|
||||
|
||||
Reference in New Issue
Block a user