Switch the Plot tab to a bright theme with a refined grid and ticks

Drop dark_background in favor of a plain white figure, matching
demo_sud's blue/red ist/soll color convention. Add faint major/minor
gridlines, drop the top/right spines, and use label_outer() so only
the bottom subplot repeats x tick labels across the shared time axis.
This commit is contained in:
2026-06-20 22:39:38 +02:00
parent 93b5667a64
commit caa94c7508
+24 -12
View File
@@ -6,10 +6,9 @@ import sys
import time
import matplotlib
matplotlib.use("Qt5Agg")
import matplotlib.style
matplotlib.style.use("dark_background")
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg
from matplotlib.figure import Figure
from matplotlib.ticker import AutoMinorLocator
from ws.client.ws_client import WsClient
from ws.message import MessageDispatcherSync
from queue import Queue
@@ -22,29 +21,42 @@ class RealtimePlot(FigureCanvasQTAgg):
instead of an offline simulation run."""
def __init__(self):
figure = Figure()
figure = Figure(facecolor='white')
FigureCanvasQTAgg.__init__(self, figure)
self.ax_temp, self.ax_rate, self.ax_power = figure.subplots(3, 1, sharex=True)
self.line_temp_ist, = self.ax_temp.plot([], [], '-c', linewidth=1, label="theta_ist")
self.line_temp_soll, = self.ax_temp.plot([], [], '-m', linewidth=1, label="theta_soll")
self.line_temp_ist, = self.ax_temp.plot([], [], '-b', linewidth=1, label="theta_ist")
self.line_temp_soll, = self.ax_temp.plot([], [], '-r', linewidth=1, label="theta_soll")
self.ax_temp.set_ylabel("Temp [°C]")
self.ax_temp.legend(loc='upper left', fontsize='small')
self.ax_temp.grid(True)
self.line_rate_ist, = self.ax_rate.plot([], [], '-c', linewidth=1, label="heatrate_ist")
self.line_rate_soll, = self.ax_rate.plot([], [], '-m', linewidth=1, label="heatrate_soll")
self.line_rate_ist, = self.ax_rate.plot([], [], '-b', linewidth=1, label="heatrate_ist")
self.line_rate_soll, = self.ax_rate.plot([], [], '-r', linewidth=1, label="heatrate_soll")
self.ax_rate.set_ylabel("Rate [K/min]")
self.ax_rate.legend(loc='upper left', fontsize='small')
self.ax_rate.grid(True)
self.line_power_set, = self.ax_power.plot([], [], '-m', linewidth=1, label="power_set")
self.line_power_eff, = self.ax_power.plot([], [], '-c', linewidth=1, label="power_eff")
self.line_power_set, = self.ax_power.plot([], [], '-r', linewidth=1, label="power_set")
self.line_power_eff, = self.ax_power.plot([], [], '-b', linewidth=1, label="power_eff")
self.ax_power.set_ylabel("Power [W]")
self.ax_power.set_xlabel("t [s]")
self.ax_power.legend(loc='upper left', fontsize='small')
self.ax_power.grid(True)
for ax in (self.ax_temp, self.ax_rate, self.ax_power):
ax.set_facecolor('white')
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.xaxis.set_minor_locator(AutoMinorLocator())
ax.yaxis.set_minor_locator(AutoMinorLocator())
ax.tick_params(which='major', direction='out', labelsize='small')
ax.tick_params(which='minor', direction='out', length=2)
ax.grid(which='major', linestyle='-', linewidth=0.5, alpha=0.3)
ax.grid(which='minor', linestyle=':', linewidth=0.5, alpha=0.15)
# Only the bottom subplot needs x tick labels - sharex keeps the
# others in sync without repeating them.
self.ax_temp.label_outer()
self.ax_rate.label_outer()
figure.tight_layout()
self.reset()