From 97344610c99252e0b79fc07ca5eb5401d6e91fa2 Mon Sep 17 00:00:00 2001
From: leufen1 <l.leufen@fz-juelich.de>
Date: Wed, 14 Sep 2022 23:18:44 +0200
Subject: [PATCH] plot is ready to use

---
 mlair/plotting/postprocessing_plotting.py | 25 +++++++++++++++++------
 1 file changed, 19 insertions(+), 6 deletions(-)

diff --git a/mlair/plotting/postprocessing_plotting.py b/mlair/plotting/postprocessing_plotting.py
index 08c1e648..271571c2 100644
--- a/mlair/plotting/postprocessing_plotting.py
+++ b/mlair/plotting/postprocessing_plotting.py
@@ -17,6 +17,7 @@ import seaborn as sns
 import xarray as xr
 from matplotlib.backends.backend_pdf import PdfPages
 from matplotlib.offsetbox import AnchoredText
+import matplotlib.dates as mdates
 from scipy.stats import mannwhitneyu
 
 from mlair import helpers
@@ -1314,12 +1315,10 @@ class PlotTimeEvolutionMetric(AbstractPlotClass):
         self._plot(plot_data, years, months, vmin, vmax, None)
 
         # line plot version
-        _data = data.mean(remaining_dim, skipna=True).transpose(model_type_dim, time_dim)
-
-        _d = data.to_dataset(name="error").to_dataframe().reset_index()
-        sns.lineplot(data=_d, x=time_dim, y="error", hue=model_type_dim, errorbar=("sd", 1),
-                     palette=sns.color_palette(), style=model_type_dim, dashes=False, markers="X")
-
+        y_dim = "error"
+        plot_data = data.to_dataset(name=y_dim).to_dataframe().reset_index()
+        self.plot_name = f"{plot_name}_line_plot"
+        self._plot_summary_line(plot_data, x_dim=time_dim, y_dim=y_dim, hue_dim=model_type_dim)
 
     @staticmethod
     def _find_nan_edge(data, time_dim):
@@ -1377,6 +1376,20 @@ class PlotTimeEvolutionMetric(AbstractPlotClass):
         plt.tight_layout()
         self._save()
 
+    def _plot_summary_line(self, data, x_dim, y_dim, hue_dim):
+        data[x_dim] = pd.to_datetime(data[x_dim].dt.strftime('%Y-%m')) #???
+        n = len(data[hue_dim].unique())
+        ax = sns.lineplot(data=data, x=x_dim, y=y_dim, hue=hue_dim, errorbar=("sd", 1),
+                          palette=sns.color_palette()[:n], style=hue_dim, dashes=False, markers=["X"]*n)
+        ax.set(xlabel=None, ylabel=self.title)
+        ax.get_legend().set_title(None)
+        ax.xaxis.set_major_locator(mdates.YearLocator())
+        ax.xaxis.set_major_formatter(mdates.DateFormatter('%b\n%Y'))
+        ax.xaxis.set_minor_locator(mdates.MonthLocator(bymonth=range(1, 13, 3)))
+        ax.xaxis.set_minor_formatter(mdates.DateFormatter('%b'))
+        plt.tight_layout()
+        self._save()
+
 
 @TimeTrackingWrapper
 class PlotSeasonalMSEStack(AbstractPlotClass):
-- 
GitLab