You've already forked donnees_meteo
Exploration des relations binaires
This commit is contained in:
@@ -23,6 +23,7 @@ def plot_scatter_pair(
|
||||
output_path: str | Path,
|
||||
*,
|
||||
sample_step: int = 10,
|
||||
lag_minutes: int | None = None,
|
||||
color_by_time: bool = True,
|
||||
cmap: str = "viridis",
|
||||
) -> Path:
|
||||
@@ -31,6 +32,8 @@ def plot_scatter_pair(
|
||||
|
||||
- On sous-échantillonne les données avec `sample_step` (par exemple,
|
||||
1 point sur 10) pour éviter un graphique illisible.
|
||||
- Si `lag_minutes` est renseigné, on décale Y(t) en Y(t + lag_minutes)
|
||||
(lag > 0 : X précède Y) avant d'aligner les points.
|
||||
- Si `color_by_time` vaut True et que l'index est temporel, les points
|
||||
sont colorés du plus ancien (sombre) au plus récent (clair).
|
||||
- Lorsque l'axe Y correspond à la direction du vent, on bascule sur
|
||||
@@ -41,7 +44,14 @@ def plot_scatter_pair(
|
||||
output_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
# On ne garde que les colonnes pertinentes et les lignes complètes
|
||||
df_pair = df[[var_x.column, var_y.column]].dropna()
|
||||
df_pair = df[[var_x.column, var_y.column]].copy()
|
||||
|
||||
applied_lag = lag_minutes or 0
|
||||
if applied_lag != 0:
|
||||
# Décale Y(t) -> Y(t + lag) : pour lag > 0, X "précède" Y
|
||||
df_pair[var_y.column] = df_pair[var_y.column].shift(-applied_lag)
|
||||
|
||||
df_pair = df_pair.dropna()
|
||||
|
||||
if sample_step > 1:
|
||||
df_pair = df_pair.iloc[::sample_step, :]
|
||||
@@ -156,6 +166,10 @@ def plot_scatter_pair(
|
||||
**scatter_kwargs,
|
||||
)
|
||||
|
||||
lag_suffix = ""
|
||||
if applied_lag != 0:
|
||||
lag_suffix = f"\nDécalage appliqué : {applied_lag:+d} min (Y décalé)"
|
||||
|
||||
if colorbar_meta is not None:
|
||||
cbar = fig.colorbar(scatter, ax=ax)
|
||||
idx = colorbar_meta["index"]
|
||||
@@ -182,11 +196,11 @@ def plot_scatter_pair(
|
||||
|
||||
if use_polar:
|
||||
assert direction_var is not None and radial_var is not None
|
||||
ax.set_title(f"{radial_var.label} en fonction de {direction_var.label}")
|
||||
ax.set_title(f"{radial_var.label} en fonction de {direction_var.label}{lag_suffix}")
|
||||
else:
|
||||
ax.set_xlabel(f"{var_x.label} ({var_x.unit})")
|
||||
ax.set_ylabel(f"{var_y.label} ({var_y.unit})")
|
||||
ax.set_title(f"{var_y.label} en fonction de {var_x.label}")
|
||||
ax.set_title(f"{var_y.label} en fonction de {var_x.label}{lag_suffix}")
|
||||
fig.tight_layout()
|
||||
fig.savefig(output_path, dpi=150)
|
||||
plt.close(fig)
|
||||
|
||||
Reference in New Issue
Block a user