# PlotDKP.py -- Pamhyr # Copyright (C) 2023-2024 INRAE # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # -*- coding: utf-8 -*- import logging from tools import timer from View.Tools.PamhyrPlot import PamhyrPlot from PyQt5.QtCore import ( QCoreApplication ) logger = logging.getLogger() _translate = QCoreApplication.translate class PlotDKP(PamhyrPlot): def __init__(self, canvas=None, trad=None, toolbar=None, data=None, parent=None): super(PlotDKP, self).__init__( canvas=canvas, trad=trad, data=data, toolbar=toolbar, parent=parent ) self.label_x = self._trad["kp"] self.label_y = self._trad["elevation"] self._isometric_axis = False self._auto_relim_update = True self._autoscale_update = True @timer def draw(self, highlight=None): self.init_axes() if self.data is None: return self.draw_river_bottom() self.draw_water() self.idle() self._init = True def draw_river_bottom(self): kp = self.data.reach.reach.get_kp() z_min = self.data.reach.reach.get_z_min() self.line_kp_zmin = self.canvas.axes.plot( kp, z_min, color=self.color_plot_river_bottom, lw=1. ) def draw_water(self): if len(self.data) != 0: kp = self.data.get_kp() elevation = self.data.get_elevation() self.line_kp_elevation = self.canvas.axes.plot( kp, elevation, color=self.color_plot_river_water, **self.plot_default_kargs ) z_min = self.data.reach.reach.get_z_min() geometry_kp = self.data.reach.reach.get_kp() filtred_elevation = list( map( lambda x: elevation[x[0]], filter( lambda x: x[1] in geometry_kp, enumerate(kp) ) ) ) self.collection = self.canvas.axes.fill_between( geometry_kp, z_min, filtred_elevation, color=self.color_plot_river_water_zone, alpha=0.7, interpolate=True ) @timer def update(self, ind=None): self.draw()