Skip to content

Commit 3551dfc

Browse files
committed
Simplify call to _plot_rprof_list with _step.Rprof
1 parent d794fa1 commit 3551dfc

File tree

1 file changed

+20
-21
lines changed

1 file changed

+20
-21
lines changed

stagpy/rprof.py

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,40 @@
11
"""Plot radial profiles."""
22

33
import matplotlib.pyplot as plt
4+
import numpy as np
45

56
from . import conf, misc
7+
from ._step import Rprof
68
from .stagyydata import StagyyData
79

810

9-
def _plot_rprof_list(sdat, lovs, rprofs, metas, stepstr, rads=None):
11+
def _plot_rprof_list(sdat, lovs, rprofs, stepstr):
1012
"""Plot requested profiles."""
11-
if rads is None:
12-
rads = {}
1313
for vfig in lovs:
1414
fig, axes = plt.subplots(ncols=len(vfig), sharey=True,
1515
figsize=(4 * len(vfig), 6))
1616
axes = [axes] if len(vfig) == 1 else axes
1717
fname = 'rprof_'
1818
for iplt, vplt in enumerate(vfig):
1919
xlabel = None
20-
for ivar, rvar in enumerate(vplt):
21-
fname += rvar + '_'
22-
rad = rads[rvar]
20+
profs_on_plt = (rprofs[rvar] for rvar in vplt)
21+
fname += '_'.join(vplt) + '_'
22+
for ivar, (rprof, rad, meta) in enumerate(profs_on_plt):
2323
if conf.rprof.depth:
2424
rad = rprofs['bounds'][1] - rad
25-
axes[iplt].plot(rprofs[rvar], rad,
25+
axes[iplt].plot(rprof, rad,
2626
conf.rprof.style,
27-
label=metas[rvar].description)
27+
label=meta.description)
2828
if conf.rprof.depth:
2929
axes[iplt].invert_yaxis()
3030
if xlabel is None:
31-
xlabel = metas[rvar].kind
32-
elif xlabel != metas[rvar].kind:
31+
xlabel = meta.kind
32+
elif xlabel != meta.kind:
3333
xlabel = ''
3434
if ivar == 0:
35-
xlabel = metas[rvar].description
35+
xlabel = meta.description
3636
if xlabel:
37-
_, unit = sdat.scale(1, metas[rvar].dim)
37+
_, unit = sdat.scale(1, meta.dim)
3838
if unit:
3939
xlabel += ' ({})'.format(unit)
4040
axes[iplt].set_xlabel(xlabel)
@@ -102,7 +102,8 @@ def plot_average(sdat, lovs):
102102

103103
# assume constant z spacing for the moment
104104
for rvar in sovs:
105-
rprof_averaged[rvar], rads[rvar], metas[rvar] = step.rprofs[rvar]
105+
rprof, rads[rvar], metas[rvar] = step.rprofs[rvar]
106+
rprof_averaged[rvar] = np.copy(rprof)
106107

107108
for step in steps_iter:
108109
nprofs += 1
@@ -111,14 +112,16 @@ def plot_average(sdat, lovs):
111112

112113
ilast = step.istep
113114
for rvar in sovs:
114-
rprof_averaged[rvar] /= nprofs
115+
# cast to float so that division happens in place
116+
rprof_averaged[rvar] = Rprof(rprof_averaged[rvar] / nprofs,
117+
rads[rvar], metas[rvar])
115118
rcmb, rsurf = step.rprofs.bounds
116119
rprof_averaged['bounds'] = (step.sdat.scale(rcmb, 'm')[0],
117120
step.sdat.scale(rsurf, 'm')[0])
118121

119122
stepstr = '{}_{}'.format(istart, ilast)
120123

121-
_plot_rprof_list(sdat, lovs, rprof_averaged, metas, stepstr, rads)
124+
_plot_rprof_list(sdat, lovs, rprof_averaged, stepstr)
122125

123126

124127
def plot_every_step(sdat, lovs):
@@ -136,17 +139,13 @@ def plot_every_step(sdat, lovs):
136139
sovs = misc.set_of_vars(lovs)
137140

138141
for step in sdat.walk.filter(rprofs=True):
139-
rprofs = {}
140-
rads = {}
141-
metas = {}
142-
for rvar in sovs:
143-
rprofs[rvar], rads[rvar], metas[rvar] = step.rprofs[rvar]
142+
rprofs = {rvar: step.rprofs[rvar] for rvar in sovs}
144143
rcmb, rsurf = step.rprofs.bounds
145144
rprofs['bounds'] = (step.sdat.scale(rcmb, 'm')[0],
146145
step.sdat.scale(rsurf, 'm')[0])
147146
stepstr = str(step.istep)
148147

149-
_plot_rprof_list(sdat, lovs, rprofs, metas, stepstr, rads)
148+
_plot_rprof_list(sdat, lovs, rprofs, stepstr)
150149

151150

152151
def cmd():

0 commit comments

Comments
 (0)