|
41 | 41 | import pandas as pd |
42 | 42 | import xlsxwriter |
43 | 43 | from deprecation import deprecated |
| 44 | +from matplotlib.colors import Normalize |
44 | 45 | from pyproj import CRS as pyprojCRS |
45 | 46 | from rasterio.crs import CRS as rasterioCRS # pylint: disable=no-name-in-module |
46 | 47 | from scipy import sparse |
@@ -1127,7 +1128,6 @@ def plot_rp_imp( |
1127 | 1128 | self, |
1128 | 1129 | return_periods=(25, 50, 100, 250), |
1129 | 1130 | log10_scale=True, |
1130 | | - smooth=True, |
1131 | 1131 | axis=None, |
1132 | 1132 | **kwargs, |
1133 | 1133 | ): |
@@ -1163,42 +1163,25 @@ def plot_rp_imp( |
1163 | 1163 | "previous calculation, use CLIMADA v5.0.0 or less." |
1164 | 1164 | ) |
1165 | 1165 |
|
1166 | | - imp_stats = ( |
1167 | | - self.local_exceedance_impact(np.array(return_periods))[0].values[:, 1:].T |
| 1166 | + impacts_stats, title, column_labels = self.local_exceedance_impact( |
| 1167 | + return_periods |
1168 | 1168 | ) |
1169 | | - imp_stats = imp_stats.astype(float) |
1170 | | - if imp_stats.size == 0: |
1171 | | - raise ValueError( |
1172 | | - "Error: Attribute imp_mat is empty. Recalculate Impact" |
1173 | | - "instance with parameter save_mat=True" |
| 1169 | + |
| 1170 | + impacts_stats_vals = impacts_stats.values[:, 1:].T.astype(float) |
| 1171 | + if not log10_scale: |
| 1172 | + min_impact, max_impact = np.nanmin(impacts_stats_vals), np.nanmax( |
| 1173 | + impacts_stats_vals |
| 1174 | + ) |
| 1175 | + kwargs.update( |
| 1176 | + { |
| 1177 | + "norm": Normalize(vmin=min_impact, vmax=max_impact), |
| 1178 | + } |
1174 | 1179 | ) |
1175 | | - if log10_scale: |
1176 | | - if np.min(imp_stats) < 0: |
1177 | | - imp_stats_log = np.log10(abs(imp_stats) + 1) |
1178 | | - colbar_name = "Log10(abs(Impact)+1) (" + self.unit + ")" |
1179 | | - elif np.min(imp_stats) < 1: |
1180 | | - imp_stats_log = np.log10(imp_stats + 1) |
1181 | | - colbar_name = "Log10(Impact+1) (" + self.unit + ")" |
1182 | | - else: |
1183 | | - imp_stats_log = np.log10(imp_stats) |
1184 | | - colbar_name = "Log10(Impact) (" + self.unit + ")" |
1185 | | - else: |
1186 | | - imp_stats_log = imp_stats |
1187 | | - colbar_name = "Impact (" + self.unit + ")" |
1188 | | - title = list() |
1189 | | - for ret in return_periods: |
1190 | | - title.append("Return period: " + str(ret) + " years") |
1191 | | - axis = u_plot.geo_im_from_array( |
1192 | | - imp_stats_log, |
1193 | | - self.coord_exp, |
1194 | | - colbar_name, |
1195 | | - title, |
1196 | | - smooth=smooth, |
1197 | | - axes=axis, |
1198 | | - **kwargs, |
1199 | | - ) |
1200 | 1180 |
|
1201 | | - return axis, imp_stats |
| 1181 | + axis = u_plot.plot_from_gdf( |
| 1182 | + impacts_stats, title, column_labels, axis=axis, **kwargs |
| 1183 | + ) |
| 1184 | + return axis, impacts_stats_vals |
1202 | 1185 |
|
1203 | 1186 | def write_csv(self, file_name): |
1204 | 1187 | """Write data into csv file. imp_mat is not saved. |
|
0 commit comments