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