Skip to content
Snippets Groups Projects
Commit 7211a38a authored by lukas leufen's avatar lukas leufen
Browse files

implemented function plot_monthly_summary()

parent d59f43c2
Branches
Tags
2 merge requests!37include new development,!27Lukas issue032 feat plotting postprocessing
...@@ -11,3 +11,7 @@ pytest-html ...@@ -11,3 +11,7 @@ pytest-html
pydot pydot
mock mock
statsmodels statsmodels
seaborn
dask==0.20.2
toolz # for dask
cloudpickle # for dask
\ No newline at end of file
__author__ = "Lukas Leufen, Felix Kleinert"
__date__ = '2019-12-17'
import os
import logging
import xarray as xr
import matplotlib
import seaborn as sns
import matplotlib.pyplot as plt
import dask.array as da
import dask
import dask.dataframe as ddf
logging.getLogger('matplotlib').setLevel(logging.WARNING)
def plot_monthly_summary(stations, data_path, name: str, window_lead_time, target_var, plot_folder="."):
logging.debug("run plot_monthly_summary()")
forecasts = None
for station in stations:
logging.debug(f"... preprocess station {station}")
file_name = os.path.join(data_path, name % station)
data = xr.open_dataarray(file_name)
data_cnn = data.sel(type="CNN").squeeze()
data_cnn.coords["ahead"].values = [f"{days}d" for days in data_cnn.coords["ahead"].values]
data_orig = data.sel(type="orig", ahead=1).squeeze()
data_orig.coords["ahead"] = "orig"
data_concat = xr.concat([data_orig, data_cnn], dim="ahead")
data_concat = data_concat.drop("type")
data_concat.index.values = data_concat.index.values.astype("datetime64[M]").astype(int) %12 +1
data_concat = data_concat.clip(min=0)
forecasts = xr.concat([forecasts, data_concat], 'index') if forecasts is not None else data_concat
forecasts = forecasts.to_dataset(name='values').to_dask_dataframe()
logging.debug("... start plotting")
ax = sns.boxplot(x='index', y='values', hue='ahead', data=forecasts.compute(), whis=1.,
palette=[matplotlib.colors.cnames["green"]]+sns.color_palette("Blues_d", window_lead_time).as_hex(),
flierprops={'marker':'.', 'markersize':1},
showmeans=True, meanprops={'markersize':1, 'markeredgecolor':'k'})
ax.set(xlabel='month', ylabel=f'{target_var}')
plt.tight_layout()
plot_path = os.path.join(os.path.abspath(plot_folder), 'test_monthly_box.pdf')
logging.debug(f"... save plot to {plot_path}")
plt.savefig(plot_path)
plt.close('all')
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment