Skip to content
Snippets Groups Projects
Commit 05542884 authored by Bert Palm's avatar Bert Palm 🎇
Browse files

plot fixes and final plot

parent 677769a7
No related branches found
No related tags found
No related merge requests found
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
import numpy as np import numpy as np
import pandas as pd import pandas as pd
import matplotlib as mpl import matplotlib as mpl
from warnings import warn
from config import Fields, Params from config import Fields, Params
from funcs import flagDispatch from funcs import flagDispatch
...@@ -46,6 +47,8 @@ def flagNext(flagger, flags, mask=True, flag_values=0, **kwargs) -> pd.Series: ...@@ -46,6 +47,8 @@ def flagNext(flagger, flags, mask=True, flag_values=0, **kwargs) -> pd.Series:
def runner(meta, flagger, data, flags=None, nodata=np.nan): def runner(meta, flagger, data, flags=None, nodata=np.nan):
plotvars = []
if flags is None: if flags is None:
flags = pd.DataFrame(index=data.index) flags = pd.DataFrame(index=data.index)
...@@ -118,7 +121,8 @@ def runner(meta, flagger, data, flags=None, nodata=np.nan): ...@@ -118,7 +121,8 @@ def runner(meta, flagger, data, flags=None, nodata=np.nan):
fchunk = fchunk.astype({ fchunk = fchunk.astype({
c: flagger.flags for c in fchunk.columns if flagger.flag_fields[0] in c}) c: flagger.flags for c in fchunk.columns if flagger.flag_fields[0] in c})
if Params.PLOT in flag_params: if flag_params.get(Params.PLOT, False):
plotvars.append(varname)
new = flagger.getFlags(fchunk[varname]) new = flagger.getFlags(fchunk[varname])
mask = old != new mask = old != new
plot(dchunk, fchunk, mask, varname, flagger, title=flag_test) plot(dchunk, fchunk, mask, varname, flagger, title=flag_test)
...@@ -127,6 +131,11 @@ def runner(meta, flagger, data, flags=None, nodata=np.nan): ...@@ -127,6 +131,11 @@ def runner(meta, flagger, data, flags=None, nodata=np.nan):
flags[start_date:end_date] = fchunk.squeeze() flags[start_date:end_date] = fchunk.squeeze()
flagger.nextTest() flagger.nextTest()
# plot all together
if plotvars:
plot(data, flags, True, set(plotvars), flagger)
return data, flags return data, flags
...@@ -144,6 +153,20 @@ def plot(data, flags, flagmask, varname, flagger, interactive_backend=True, titl ...@@ -144,6 +153,20 @@ def plot(data, flags, flagmask, varname, flagger, interactive_backend=True, titl
from pandas.plotting import register_matplotlib_converters from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters() register_matplotlib_converters()
if not isinstance(varname, (list, set)):
varname = set([varname])
tmp = []
for var in varname:
if var not in data.columns:
warn(f"Cannot plot column '{var}' that is not present in data.", UserWarning)
else:
tmp.append(var)
if tmp:
varname = tmp
else:
return
def plot_vline(plt, points, color='blue'): def plot_vline(plt, points, color='blue'):
# workaround for ax.vlines() as this work unexpected # workaround for ax.vlines() as this work unexpected
for point in points: for point in points:
...@@ -189,8 +212,6 @@ def plot(data, flags, flagmask, varname, flagger, interactive_backend=True, titl ...@@ -189,8 +212,6 @@ def plot(data, flags, flagmask, varname, flagger, interactive_backend=True, titl
# ax.vlines(idx, *ylim, linestyles=':', color=colors[i]) # ax.vlines(idx, *ylim, linestyles=':', color=colors[i])
plot_vline(ax, idx, color=colors[i]) plot_vline(ax, idx, color=colors[i])
if not isinstance(varname, (list, set)):
varname = set([varname])
plots = len(varname) plots = len(varname)
if plots > 1: if plots > 1:
fig, axes = plt.subplots(plots, 1, sharex=True) fig, axes = plt.subplots(plots, 1, sharex=True)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment