@@ -259,6 +259,25 @@ def plot_vec(axis, step, var):
259259 linewidths = 1 )
260260
261261
262+ def _findminmax (sdat , sovs ):
263+ """Find min and max values of several fields."""
264+ minmax = {}
265+ for step in sdat .walk .filter (snap = True ):
266+ for var in sovs :
267+ if var in step .fields :
268+ if var in phyvars .FIELD :
269+ dim = phyvars .FIELD [var ].dim
270+ else :
271+ dim = phyvars .FIELD_EXTRA [var ].dim
272+ field , _ = sdat .scale (step .fields [var ], dim )
273+ if var in minmax :
274+ minmax [var ] = (min (minmax [var ][0 ], np .nanmin (field )),
275+ max (minmax [var ][1 ], np .nanmax (field )))
276+ else :
277+ minmax [var ] = np .nanmin (field ), np .nanmax (field )
278+ return minmax
279+
280+
262281def cmd ():
263282 """Implementation of field subcommand.
264283
@@ -275,19 +294,7 @@ def cmd():
275294 conf .plot .vmin = None
276295 conf .plot .vmax = None
277296 sovs = set (slov [0 ] for plov in lovs for slov in plov )
278- for step in sdat .walk .filter (snap = True ):
279- for var in sovs :
280- if var in step .fields :
281- if var in phyvars .FIELD :
282- dim = phyvars .FIELD [var ].dim
283- else :
284- dim = phyvars .FIELD_EXTRA [var ].dim
285- field , _ = sdat .scale (step .fields [var ], dim )
286- if var in minmax :
287- minmax [var ] = (min (minmax [var ][0 ], np .nanmin (field )),
288- max (minmax [var ][1 ], np .nanmax (field )))
289- else :
290- minmax [var ] = np .nanmin (field ), np .nanmax (field )
297+ minmax = _findminmax (sdat , sovs )
291298 for step in sdat .walk .filter (snap = True ):
292299 for vfig in lovs :
293300 fig , axes = plt .subplots (ncols = len (vfig ), squeeze = False ,
0 commit comments