Files
davide c4e71a2676 Usa il backend Qt per i grafici e salva PNG quando non interattivo
Aggiunge PySide6 alle dipendenze cosi' matplotlib seleziona il backend
qtagg (WSLg mostra le finestre); senza tkinter/Qt ripiegava su agg e
plt.show() non apriva nulla. Se il backend resta non interattivo,
plot_csv.py salva i grafici come PNG in dataset/ invece di non mostrare
niente. Etichetta della legenda aggiornata al lato interno.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 19:21:00 +02:00

49 lines
1.5 KiB
Python

from pathlib import Path
import matplotlib
import matplotlib.pyplot as plt
import pandas as pd
def main() -> None:
percorso_csv = Path("dataset/run_0001.csv")
if not percorso_csv.exists():
raise FileNotFoundError(
"File CSV non trovato. Esegui prima `python simulate.py`."
)
df = pd.read_csv(percorso_csv)
fig_temperature = plt.figure()
plt.plot(df["tempo_s"], df["T_vera_lato_sensore_C"], label="Temperatura vera lato interno")
plt.plot(df["tempo_s"], df["T_misurata_sensore_C"], label="Temperatura misurata dal sensore")
plt.xlabel("Tempo [s]")
plt.ylabel("Temperatura [°C]")
plt.title("Sensore fisso, sorgenti in moto")
plt.legend()
plt.grid(True)
plt.tight_layout()
fig_flusso = plt.figure()
plt.plot(df["tempo_s"], df["flusso_termico_sorgente_W_m2"])
plt.xlabel("Tempo [s]")
plt.ylabel("Flusso termico efficace [W/m²]")
plt.title("Flusso termico nel punto x osservato dal sensore")
plt.grid(True)
plt.tight_layout()
# Se il backend non è interattivo (nessun display o backend GUI
# disponibile), plt.show() non aprirebbe nulla: si salvano i PNG.
if matplotlib.get_backend().lower() == "agg":
for fig, nome in [(fig_temperature, "temperature"), (fig_flusso, "flusso")]:
percorso = Path("dataset") / f"grafico_{nome}.png"
fig.savefig(percorso, dpi=150)
print(f"Backend non interattivo: grafico salvato in {percorso}")
return
plt.show()
if __name__ == "__main__":
main()