TTD : remove first unrelevant points
Browse files
climateqa/engine/talk_to_data/plot.py
CHANGED
|
@@ -81,15 +81,29 @@ def plot_indicator_evolution_at_location(params: dict) -> Callable[..., Figure]:
|
|
| 81 |
years = df_avg["year"].astype(int).tolist()
|
| 82 |
|
| 83 |
# Compute the 10-year rolling average
|
|
|
|
| 84 |
sliding_averages = (
|
| 85 |
df_avg[indicator]
|
| 86 |
-
.rolling(window=
|
| 87 |
.mean()
|
| 88 |
.astype(float)
|
| 89 |
.tolist()
|
| 90 |
)
|
| 91 |
model_label = "Model Average"
|
| 92 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 93 |
else:
|
| 94 |
df_model = df
|
| 95 |
|
|
@@ -98,15 +112,28 @@ def plot_indicator_evolution_at_location(params: dict) -> Callable[..., Figure]:
|
|
| 98 |
years = df_model["year"].astype(int).tolist()
|
| 99 |
|
| 100 |
# Compute the 10-year rolling average
|
|
|
|
| 101 |
sliding_averages = (
|
| 102 |
df_model[indicator]
|
| 103 |
-
.rolling(window=
|
| 104 |
.mean()
|
| 105 |
.astype(float)
|
| 106 |
.tolist()
|
| 107 |
)
|
| 108 |
model_label = f"Model : {df['model'].unique()[0]}"
|
| 109 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 110 |
|
| 111 |
# Indicator per year plot
|
| 112 |
fig.add_scatter(
|
|
@@ -117,17 +144,6 @@ def plot_indicator_evolution_at_location(params: dict) -> Callable[..., Figure]:
|
|
| 117 |
marker=dict(color="#1f77b4"),
|
| 118 |
hovertemplate=f"{indicator_label}: %{{y:.2f}} {unit}<br>Year: %{{x}}<extra></extra>"
|
| 119 |
)
|
| 120 |
-
|
| 121 |
-
# Sliding average dashed line
|
| 122 |
-
fig.add_scatter(
|
| 123 |
-
x=years,
|
| 124 |
-
y=sliding_averages,
|
| 125 |
-
mode="lines",
|
| 126 |
-
name="10 years rolling average",
|
| 127 |
-
line=dict(dash="dash"),
|
| 128 |
-
marker=dict(color="#d62728"),
|
| 129 |
-
hovertemplate=f"10-year average: %{{y:.2f}} {unit}<br>Year: %{{x}}<extra></extra>"
|
| 130 |
-
)
|
| 131 |
fig.update_layout(
|
| 132 |
title=f"Plot of {indicator_label} in {location} ({model_label})",
|
| 133 |
xaxis_title="Year",
|
|
|
|
| 81 |
years = df_avg["year"].astype(int).tolist()
|
| 82 |
|
| 83 |
# Compute the 10-year rolling average
|
| 84 |
+
rolling_window = 10
|
| 85 |
sliding_averages = (
|
| 86 |
df_avg[indicator]
|
| 87 |
+
.rolling(window=rolling_window, min_periods=rolling_window)
|
| 88 |
.mean()
|
| 89 |
.astype(float)
|
| 90 |
.tolist()
|
| 91 |
)
|
| 92 |
model_label = "Model Average"
|
| 93 |
|
| 94 |
+
# Only add rolling average if we have enough data points
|
| 95 |
+
if len([x for x in sliding_averages if pd.notna(x)]) > 0:
|
| 96 |
+
# Sliding average dashed line
|
| 97 |
+
fig.add_scatter(
|
| 98 |
+
x=years,
|
| 99 |
+
y=sliding_averages,
|
| 100 |
+
mode="lines",
|
| 101 |
+
name="10 years rolling average",
|
| 102 |
+
line=dict(dash="dash"),
|
| 103 |
+
marker=dict(color="#d62728"),
|
| 104 |
+
hovertemplate=f"10-year average: %{{y:.2f}} {unit}<br>Year: %{{x}}<extra></extra>"
|
| 105 |
+
)
|
| 106 |
+
|
| 107 |
else:
|
| 108 |
df_model = df
|
| 109 |
|
|
|
|
| 112 |
years = df_model["year"].astype(int).tolist()
|
| 113 |
|
| 114 |
# Compute the 10-year rolling average
|
| 115 |
+
rolling_window = 10
|
| 116 |
sliding_averages = (
|
| 117 |
df_model[indicator]
|
| 118 |
+
.rolling(window=rolling_window, min_periods=rolling_window)
|
| 119 |
.mean()
|
| 120 |
.astype(float)
|
| 121 |
.tolist()
|
| 122 |
)
|
| 123 |
model_label = f"Model : {df['model'].unique()[0]}"
|
| 124 |
|
| 125 |
+
# Only add rolling average if we have enough data points
|
| 126 |
+
if len([x for x in sliding_averages if pd.notna(x)]) > 0:
|
| 127 |
+
# Sliding average dashed line
|
| 128 |
+
fig.add_scatter(
|
| 129 |
+
x=years,
|
| 130 |
+
y=sliding_averages,
|
| 131 |
+
mode="lines",
|
| 132 |
+
name="10 years rolling average",
|
| 133 |
+
line=dict(dash="dash"),
|
| 134 |
+
marker=dict(color="#d62728"),
|
| 135 |
+
hovertemplate=f"10-year average: %{{y:.2f}} {unit}<br>Year: %{{x}}<extra></extra>"
|
| 136 |
+
)
|
| 137 |
|
| 138 |
# Indicator per year plot
|
| 139 |
fig.add_scatter(
|
|
|
|
| 144 |
marker=dict(color="#1f77b4"),
|
| 145 |
hovertemplate=f"{indicator_label}: %{{y:.2f}} {unit}<br>Year: %{{x}}<extra></extra>"
|
| 146 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 147 |
fig.update_layout(
|
| 148 |
title=f"Plot of {indicator_label} in {location} ({model_label})",
|
| 149 |
xaxis_title="Year",
|