diff --git a/mlair/plotting/postprocessing_plotting.py b/mlair/plotting/postprocessing_plotting.py index d25736f1a9ca47984ac513805a9b458ff09ff667..b23807ae30f52f19581b188d19213fdc81c9258e 100644 --- a/mlair/plotting/postprocessing_plotting.py +++ b/mlair/plotting/postprocessing_plotting.py @@ -1253,6 +1253,7 @@ class PlotTimeEvolutionMetric(AbstractPlotClass): vmax = int(data.quantile(0.95)) data = self._prepare_data(data, time_dim, model_type_dim, model_indicator, model_name) + # detailed plot for each model type for t in data[model_type_dim]: # note: could be expanded to create plot per ahead step plot_data = data.sel({model_type_dim: t}).mean(ahead_dim).to_pandas() @@ -1262,6 +1263,18 @@ class PlotTimeEvolutionMetric(AbstractPlotClass): self.plot_name = f"{plot_name}_{t.values}" self._plot(plot_data, years, months, vmin, vmax, str(t.values)) + # aggregated version with all model types + remaining_dim = set(data.dims).difference((model_type_dim, time_dim)) + _data = data.mean(remaining_dim, skipna=True).transpose(model_type_dim, time_dim) + vmin = int(_data.quantile(0.05)) + vmax = int(_data.quantile(0.95)) + plot_data = _data.to_pandas() + years = plot_data.columns.strftime("%Y").to_list() + months = plot_data.columns.strftime("%b").to_list() + plot_data.columns = plot_data.columns.strftime("%b %Y") + self.plot_name = f"{plot_name}_summary" + self._plot(plot_data, years, months, vmin, vmax, None) + @staticmethod def _find_nan_edge(data, time_dim): coll = [] @@ -1304,7 +1317,7 @@ class PlotTimeEvolutionMetric(AbstractPlotClass): @staticmethod def _aspect_cbar(val): - return min(max(1.25 * val + 7.5, 10), 30) + return min(max(1.25 * val + 7.5, 5), 30) def _plot(self, data, years, months, vmin=None, vmax=None, subtitle=None): fig, ax = plt.subplots(figsize=(max(data.shape[1] / 6, 12), max(data.shape[0] / 3.5, 2)))