import datetime as dt
import urllib
import warnings
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import wradlib as wrl
import wradlib_data
import xarray as xr
import xradar as xd
from IPython.display import display
warnings.filterwarnings("ignore")
/home/docs/checkouts/readthedocs.org/user_builds/wradlib/conda/latest/lib/python3.13/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html
from .autonotebook import tqdm as notebook_tqdm
2D Membershipfunctions#
Precipitation Types#
pr_types = wrl.classify.pr_types
for k, v in pr_types.items():
print(str(k) + " - ".join(v))
0LR - Light Rain
1MR - Moderate Rain
2HR - Heavy Rain
3LD - Large Drops
4HL - Hail
5RH - Rain/Hail
6GH - Graupel/Hail
7DS - Dry Snow
8WS - Wet Snow
9HC - H Crystals
10VC - V Crystals
11NP - No Precip
Load 2D Membership Functions#
filename = wradlib_data.DATASETS.fetch("misc/msf_xband_v1.nc")
msf = xr.open_dataset(filename)
display(msf)
<xarray.Dataset> Size: 97kB
Dimensions: (hmc: 11, idp: 55, trapezoid: 4)
Coordinates:
* hmc (hmc) <U2 88B 'LR' 'MR' 'HR' 'LD' 'HL' ... 'GH' 'DS' 'WS' 'HC' 'VC'
* idp (idp) float64 440B -10.0 -8.0 -6.0 -4.0 ... 92.0 94.0 96.0 98.0
Dimensions without coordinates: trapezoid
Data variables:
ZH (hmc, idp, trapezoid) float64 19kB ...
ZDR (hmc, idp, trapezoid) float64 19kB ...
RHO (hmc, idp, trapezoid) float64 19kB ...
KDP (hmc, idp, trapezoid) float64 19kB ...
TEMP (hmc, idp, trapezoid) float64 19kB ...
Attributes:
version: 1
title: 2D Membershipfunctions Hydrometeorclassification for XBand
institution: Institute of Geosciences, Meteorology Section, University o...
history: created by Raquel Evaristo, adapted to netCDF by Kai Mühlbauer
comment: created with wradlibPlot 2D Membership Functions#
minmax = [(-10, 100), (-1, 6), (0.0, 1.0), (-5, 35), (-65, 45)]
for i, pr in enumerate(pr_types.values()):
if pr[0] == "NP":
continue
fig = plt.figure(figsize=(10, 8))
t = fig.suptitle(" - ".join(pr))
t.set_y(1.02)
hmc = msf.sel(hmc=pr[0])
for k, p in enumerate(hmc.data_vars.values()):
p = p.where(p != 0)
ax = fig.add_subplot(3, 2, k + 1)
p.sel(trapezoid=0).plot(x="idp", c="k", lw=1.0, ax=ax)
p.sel(trapezoid=1).plot(x="idp", c="k", lw=2.0, ax=ax)
p.sel(trapezoid=2).plot(x="idp", c="k", lw=2.0, ax=ax)
p.sel(trapezoid=3).plot(x="idp", c="k", lw=1.0, ax=ax)
ax.set_xlim((hmc.idp.min(), hmc.idp.max()))
ax.margins(x=0.05, y=0.05)
t = ax.set_title(f"{p.long_name}")
ax.set_ylim(minmax[k])
fig.tight_layout()
plt.show()