From c2c3e231ec5b0e0a013fd6aecf60a0ee90a3ddb7 Mon Sep 17 00:00:00 2001
From: Le Roux Erwan <erwan.le-roux@irstea.fr>
Date: Fri, 7 Feb 2020 19:11:04 +0100
Subject: [PATCH] [paper 1] finish selection curves.

---
 .../plot_selection_curves.py                  | 21 +++++++++++--------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/papers/exceeding_snow_loads/result_trends_and_return_levels/plot_selection_curves.py b/papers/exceeding_snow_loads/result_trends_and_return_levels/plot_selection_curves.py
index dfb96643..0e2e0bbd 100644
--- a/papers/exceeding_snow_loads/result_trends_and_return_levels/plot_selection_curves.py
+++ b/papers/exceeding_snow_loads/result_trends_and_return_levels/plot_selection_curves.py
@@ -8,6 +8,10 @@ from papers.exceeding_snow_loads.paper_utils import dpi_paper1_figure
 from papers.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import StudyVisualizerForNonStationaryTrends
 from itertools import chain
 
+def permute(l, permutation):
+    # permutation = [i//2  if i % 2 == 0 else 4 + i //2 for i in range(8)]
+    return [l[i] for i in permutation]
+
 def plot_selection_curves(altitude_to_visualizer: Dict[int, StudyVisualizerForNonStationaryTrends]):
     """
     Plot a single trend curves
@@ -20,10 +24,11 @@ def plot_selection_curves(altitude_to_visualizer: Dict[int, StudyVisualizerForNo
     selected_counter = merge_counter([v.selected_trend_test_class_counter for v in altitude_to_visualizer.values()])
     selected_and_significative_counter = merge_counter([v.selected_and_significative_trend_test_class_counter for v in altitude_to_visualizer.values()])
     total_of_selected_models = sum(selected_counter.values())
-    select_list = get_ordered_list_from_counter(selected_counter, total_of_selected_models, visualizer)
-    selected_and_signifcative_list = get_ordered_list_from_counter(selected_and_significative_counter, total_of_selected_models, visualizer)
-    print(select_list)
-    print(selected_and_signifcative_list)
+    l = sorted(enumerate(visualizer.non_stationary_trend_test), key=lambda e:selected_counter[e[1]])
+    permutation = [i for i, v in l][::-1]
+    select_list = get_ordered_list_from_counter(selected_counter, total_of_selected_models, visualizer, permutation)
+    selected_and_signifcative_list = get_ordered_list_from_counter(selected_and_significative_counter, total_of_selected_models, visualizer, permutation)
+    labels = permute(['${}$'.format(t.label) for t in visualizer.non_stationary_trend_test], permutation)
 
     # parameters
     width = 5
@@ -43,7 +48,6 @@ def plot_selection_curves(altitude_to_visualizer: Dict[int, StudyVisualizerForNo
     ax.set_xlabel('Models', fontsize=legend_fontsize)
 
     ax.set_xticks(x)
-    labels = ['${}$'.format(t.label) for t in visualizer.non_stationary_trend_test]
     ax.set_xticklabels(labels)
 
     # for ax_horizontal in [ax, ax_twiny]:
@@ -83,15 +87,14 @@ def plot_selection_curves(altitude_to_visualizer: Dict[int, StudyVisualizerForNo
     #     ax_twinx.legend(loc='upper right', prop={'size': size})
 
     # Save plot
-    plt.show()
     visualizer.plot_name = 'Selection curves'
     visualizer.show_or_save_to_file(no_title=True, dpi=dpi_paper1_figure)
     plt.close()
 
 
-def get_ordered_list_from_counter(selected_counter, total_of_selected_models, visualizer):
-    return [100 * float(selected_counter[t]) / total_of_selected_models if t in selected_counter else 0
-                for t in visualizer.non_stationary_trend_test]
+def get_ordered_list_from_counter(selected_counter, total_of_selected_models, visualizer, permutation):
+    return permute([100 * float(selected_counter[t]) / total_of_selected_models if t in selected_counter else 0
+                for t in visualizer.non_stationary_trend_test], permutation)
 
 def merge_counter(counters_list):
     global_counter = counters_list[0]
-- 
GitLab