浏览代码

graf_teplota_castice

Tomas-Ranusa 2 周之前
父节点
当前提交
2ced15b9c6
共有 1 个文件被更改,包括 86 次插入0 次删除
  1. 86 0
      temperature_vs_particle_count.py

+ 86 - 0
temperature_vs_particle_count.py

@@ -0,0 +1,86 @@
+import pandas as pd
+import matplotlib.pyplot as plt
+import numpy as np
+import matplotlib.dates as mdates
+
+#======================================================
+# ==              SCRIPT PARAMETERS                  ==
+#======================================================
+
+# === CSV Parameters ===
+CSV_FILENAME      =   r"c:\Users\ranny\Downloads\week_2025_41_data.csv"
+CSV_SEPARATOR     =   ","
+
+COL_DIAMETER      =   "Diameter1 [mm]"
+COL_VELOCITY      =   "Velocity [m/s]"
+COL_TEMPERATURE   =   "Temperature [C]"
+
+FIG_TITLE         =   f"Závislosť Teploty a Počtu Častíc Detegovaných za Hodinu"
+
+FIG_GRID_STYLE    =   ":"
+
+# === Limits for Velocity & Diameter Filtering ===
+LIM_VELOCITY_MIN  =   0.2   # m/s
+LIM_DIAMETER_MIN  =   0.16   # mm
+LIM_DIAMETER_MAX  =   8.0   # mm
+
+# === Figure Parameters ===
+FIG_WIDTH         =   9
+FIG_HEIGHT        =   6
+
+FIG_DATA_ALPHA    =   0.6
+FIG_DATA_SIZE     =   35
+
+# === Load CSV ===
+df = pd.read_csv(CSV_FILENAME, sep=CSV_SEPARATOR)
+
+# === Clean column names ===
+df.columns = [col.strip() for col in df.columns]
+print(df.columns)
+
+# === Drop missing data & provide filtering ===
+df = df.dropna(subset=[COL_DIAMETER, COL_VELOCITY, COL_TEMPERATURE])
+df = df[df[COL_VELOCITY] >= LIM_VELOCITY_MIN]
+df = df[(df[COL_DIAMETER] >= LIM_DIAMETER_MIN) & (df[COL_DIAMETER] <= LIM_DIAMETER_MAX)]
+
+# Convert timestamp
+df['Timestamp'] = pd.to_datetime(df['Timestamp'])
+df = df.set_index('Timestamp')
+
+
+# === Hourly resampling ===
+hourly = (
+    df
+    .resample("1h")
+    .agg({
+        COL_TEMPERATURE: "mean",
+        COL_DIAMETER: "count"
+    })
+    .rename(columns={COL_DIAMETER: "Particle Count"})
+)
+
+hourly['Temperature [C]'] = hourly['Temperature [C]'].interpolate(method='linear')
+
+# =====================================
+# 📈 Create the plot (temperature + particles)
+# =====================================
+fig, ax1 = plt.subplots(figsize=(9, 6))
+ax2 = ax1.twinx()
+
+ax1.plot(hourly.index, hourly['Temperature [C]'], color='tab:red', label='Teplota [°C]', linewidth=2)
+ax1.set_ylabel('Teplota [°C]', color='tab:red')
+ax1.tick_params(axis='y', labelcolor='tab:red')
+
+ax2.bar(hourly.index, hourly['Particle Count'], width=0.03, alpha=0.4, color='tab:blue', label='Particles/hour')
+ax2.set_ylabel('Počet kvapiek detegovaných za hodinu', color='tab:blue')
+ax2.tick_params(axis='y', labelcolor='tab:blue')
+
+# === Formátovanie timestamp na dd.mm.yyyy ===
+ax1.xaxis.set_major_formatter(mdates.DateFormatter('%d.%m.%Y'))
+fig.autofmt_xdate()  # otočí dátumy, aby sa neprekrývali
+
+plt.title(FIG_TITLE)
+#plt.legend(title=FIG_LEGEND_TITLE, fontsize=FIG_LEGEND_SIZE, ncol=FIG_LEGEND_COLS)
+plt.grid(True, linestyle=FIG_GRID_STYLE)
+plt.tight_layout()
+plt.show()