From bab1ce9e177998a33a5b21581e2f74496764849c Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr> Date: Tue, 22 Aug 2023 11:03:50 +0200 Subject: [PATCH] Results: Display custom time in hydrograph. --- src/Solver/Mage.py | 2 +- src/View/Results/PlotH.py | 52 +++++++++++++++++++++++-- src/View/ui/Widgets/extendedTimeEdit.ui | 3 ++ 3 files changed, 52 insertions(+), 5 deletions(-) diff --git a/src/Solver/Mage.py b/src/Solver/Mage.py index 9bc9331e..a9273176 100644 --- a/src/Solver/Mage.py +++ b/src/Solver/Mage.py @@ -201,7 +201,7 @@ class Mage(AbstractSolver): f.write(f"*{header[0]:>9}|{header[1]:>10}\n") for d in bound.data: - f.write(f"{d[0]:10.3f}{d[1]:10.3f}\n") + f.write(f"{d[0]:10}{d[1]:10}\n") return files diff --git a/src/View/Results/PlotH.py b/src/View/Results/PlotH.py index dcc9f7f6..47c3f1bf 100644 --- a/src/View/Results/PlotH.py +++ b/src/View/Results/PlotH.py @@ -19,6 +19,7 @@ import logging from functools import reduce +from datetime import datetime from tools import timer, trace from View.Plot.APlot import APlot @@ -34,14 +35,14 @@ logger = logging.getLogger() class PlotH(APlot): def __init__(self, canvas=None, results=None, reach_id=0, profile_id=0, - toolbar=None, display_current=True): + toolbar=None): super(PlotH, self).__init__( canvas=canvas, data=results, toolbar=toolbar ) - self.display_current = display_current + self._mode = "time" self._current_timestamp = max(results.get("timestamps")) self._current_reach_id = reach_id @@ -99,6 +100,10 @@ class PlotH(APlot): ) return + self.canvas.axes.set_ylim( + [min(min(y),0), max(y)] + ) + self._line = [ self.canvas.axes.plot( x, y, lw=1., @@ -107,8 +112,47 @@ class PlotH(APlot): ) ] - self.canvas.axes.autoscale_view(True, True, True) - self.canvas.axes.autoscale() + # Custom time display + nb = len(x) + mod = int(nb / 5) + mod = mod if mod > 0 else nb + + fx = list( + map( + lambda x: x[1], + filter( + lambda x: x[0] % mod == 0, + enumerate(x) + ) + ) + ) + + if self._mode == "time": + t0 = datetime.fromtimestamp(0) + xt = list( + map( + lambda v: ( + str( + datetime.fromtimestamp(v) - t0 + ).split(",")[0]\ + .replace("days", _translate("Results", "days"))\ + .replace("day", _translate("Results", "day")) + ), + fx + ) + ) + else: + xt = list( + map( + lambda v: str(datetime.fromtimestamp(v).date()), + fx + ) + ) + + self.canvas.axes.set_xticks(ticks=fx, labels=xt, rotation=45) + + # self.canvas.axes.autoscale_view(True, True, True) + # self.canvas.axes.autoscale() self.canvas.figure.tight_layout() self.canvas.figure.canvas.draw_idle() if self.toolbar is not None: diff --git a/src/View/ui/Widgets/extendedTimeEdit.ui b/src/View/ui/Widgets/extendedTimeEdit.ui index 493a96a1..eddf3892 100644 --- a/src/View/ui/Widgets/extendedTimeEdit.ui +++ b/src/View/ui/Widgets/extendedTimeEdit.ui @@ -28,6 +28,9 @@ <property name="alignment"> <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> </property> + <property name="maximum"> + <number>999999</number> + </property> </widget> </item> <item> -- GitLab