Files
luce/2025_01_21/main.py
T
2026-06-19 11:15:39 +02:00

66 lines
2.0 KiB
Python

import pandas as pd
import matplotlib.pyplot as plt
# Load the flow data (Orniac & Figeac)
flow_file_path = "débit_Orniac&Figeac.xlsx"
flow_data = pd.read_excel(flow_file_path, parse_dates=["Date et heure"])
# Load the rainfall data
rainfall_file_path = "Q_46_latest-2023-2025_RR-T-Vent.xlsx"
rainfall_data = pd.read_excel(rainfall_file_path, parse_dates=["Date"])
# Resample rainfall data to hourly to match flow data
rainfall_data.set_index("Date", inplace=True)
# Ensure the data overlaps in date ranges
min_date = min(flow_data["Date et heure"].min(), rainfall_data["Date"].min())
max_date = max(flow_data["Date et heure"].max(), rainfall_data["Date"].max())
flow_data = flow_data[(flow_data["Date et heure"] >= min_date) & (flow_data["Date et heure"] <= max_date)]
rainfall_hourly = rainfall_data[(rainfall_data["Date"] >= min_date) & (rainfall_data["Date"] <= max_date)]
# Create the plot
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(12, 8), gridspec_kw={"height_ratios": [1, 2]}, sharex=True)
# Rainfall subplot
ax1.bar(
rainfall_hourly["Date"],
rainfall_hourly["Rainfall"],
color="dodgerblue",
alpha=0.7,
width=0.02,
label="Rainfall (mm)"
)
ax1.set_ylabel("Rainfall (mm)", fontsize=12)
ax1.set_ylim(10, 0) # Reverse y-axis for rainfall
ax1.legend(fontsize=10)
ax1.grid(True, linestyle="--", alpha=0.7)
# Flow subplot
ax2.plot(
flow_data["Date et heure"],
flow_data["Valeur à Orniac (en m³/s)"],
label="Orniac Flow (m³/s)",
color="orange",
linewidth=1.5
)
ax2.plot(
flow_data["Date et heure"],
flow_data["Valeur à Figeac (en m³/s)"],
label="Figeac Flow (m³/s)",
color="blue",
linewidth=1.5
)
ax2.set_ylabel("Flow (m³/s)", fontsize=12)
ax2.set_xlabel("Date and Time", fontsize=12)
ax2.legend(fontsize=10)
ax2.grid(True, linestyle="--", alpha=0.7)
# Finalize the layout
fig.suptitle("Rainfall and Flow at Figeac and Orniac", fontsize=16)
plt.xticks(rotation=45)
plt.tight_layout(rect=[0, 0, 1, 0.95])
# Show the plot
plt.show()