Files
report-temperatura/plot_confronto_fit.py

43 lines
1.4 KiB
Python
Raw Permalink Normal View History

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# --- Dati ---
df = pd.read_csv("data.csv")
df["time_s"] = df["time since start [ms]"] / 1000.0
df_plot = df[df["time_s"] >= 114]
# --- Parametri fit ---
T_INF = 22.99
t_full = np.linspace(114, df["time_s"].max(), 1000)
# 1° tratto: t0=115.0, A=194.51, tau=13.17
T_curve_1 = T_INF + 194.51 * np.exp(-(t_full - 115.0) / 13.17)
# 2° tratto: t0=117.5, A=154.94, tau=17.12
T_curve_2 = T_INF + 154.94 * np.exp(-(t_full - 117.5) / 17.12)
# --- Plot ---
fig, ax = plt.subplots(figsize=(12, 5))
ax.plot(df_plot["time_s"], df_plot["temp_obj IR [C]"],
color="steelblue", linewidth=0.8, label="Dati raw (temp_obj)")
ax.plot(t_full, T_curve_1,
color="tomato", linewidth=2, linestyle="--",
label=r"Fit 1° tratto: $22.99 + 194.51\cdot e^{-(t-115)/13.17}$")
ax.plot(t_full, T_curve_2,
color="seagreen", linewidth=2, linestyle="--",
label=r"Fit 2° tratto: $22.99 + 154.94\cdot e^{-(t-117.5)/17.12}$")
ax.axvspan(115.0, 115.9, color="tomato", alpha=0.10, label="Finestra fit 1° tratto")
ax.axvspan(117.5, df["time_s"].max(), color="seagreen", alpha=0.07, label="Finestra fit 2° tratto")
ax.set_xlabel("Tempo [s]")
ax.set_ylabel("Temperatura [°C]")
ax.set_title("Confronto curve di fit sui dati raw")
ax.legend(fontsize=8)
ax.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig("plot_confronto_fit.png", dpi=150, bbox_inches="tight")
plt.show()