Skip to content

Commit 9597363

Browse files
adapt impact.plot_rp_intensity
1 parent 1b33a5a commit 9597363

File tree

1 file changed

+17
-34
lines changed

1 file changed

+17
-34
lines changed

climada/engine/impact.py

Lines changed: 17 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import pandas as pd
4242
import xlsxwriter
4343
from deprecation import deprecated
44+
from matplotlib.colors import Normalize
4445
from pyproj import CRS as pyprojCRS
4546
from rasterio.crs import CRS as rasterioCRS # pylint: disable=no-name-in-module
4647
from scipy import sparse
@@ -1127,7 +1128,6 @@ def plot_rp_imp(
11271128
self,
11281129
return_periods=(25, 50, 100, 250),
11291130
log10_scale=True,
1130-
smooth=True,
11311131
axis=None,
11321132
**kwargs,
11331133
):
@@ -1163,42 +1163,25 @@ def plot_rp_imp(
11631163
"previous calculation, use CLIMADA v5.0.0 or less."
11641164
)
11651165

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
11681168
)
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+
}
11741179
)
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-
)
12001180

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
12021185

12031186
def write_csv(self, file_name):
12041187
"""Write data into csv file. imp_mat is not saved.

0 commit comments

Comments
 (0)