diff --git a/src/metpy/plots/declarative.py b/src/metpy/plots/declarative.py index 754e8a4076d..e6bc8a670f2 100644 --- a/src/metpy/plots/declarative.py +++ b/src/metpy/plots/declarative.py @@ -1284,6 +1284,7 @@ class PlotObs(HasTraits): * colors (optional) * vector_field (optional) * vector_field_color (optional) + * vector_field_length (optional) * reduce_points (optional) """ @@ -1356,6 +1357,11 @@ class PlotObs(HasTraits): vector_field_color = Unicode('black', allow_none=True) vector_field_color.__doc__ = """String color name to plot the vector. (optional)""" + vector_field_length = Int(default_value=None, allow_none=True) + vector_field_length.__doc__ = """Integer value to set the length of the plotted vector. + (optional) + """ + reduce_points = Float(default_value=0) reduce_points.__doc__ = """Float to reduce number of points plotted. (optional)""" @@ -1493,8 +1499,12 @@ def _build(self): color = self.colors[i] else: color = self.colors[0] - if self.formats[i] is not None: - mapper = getattr(wx_symbols, str(self.formats[i]), None) + if len(self.formats) > 1: + formats = self.formats[i] + else: + formats = self.formats[0] + if formats is not None: + mapper = getattr(wx_symbols, str(formats), None) if mapper is not None: self.handle.plot_symbol(location, data[ob_type][subset], mapper, color=color) @@ -1504,5 +1514,7 @@ def _build(self): else: self.handle.plot_parameter(location, data[ob_type][subset], color=color) if self.vector_field[0] is not None: + kwargs = ({'length': self.vector_field_length} + if self.vector_field_length is not None else {}) self.handle.plot_barb(data[self.vector_field[0]][subset], - data[self.vector_field[1]][subset]) + data[self.vector_field[1]][subset], **kwargs) diff --git a/tests/plots/baseline/test_declarative_upa_obs.png b/tests/plots/baseline/test_declarative_upa_obs.png index ecfee7080b4..cc04aa3f1e6 100644 Binary files a/tests/plots/baseline/test_declarative_upa_obs.png and b/tests/plots/baseline/test_declarative_upa_obs.png differ diff --git a/tests/plots/test_declarative.py b/tests/plots/test_declarative.py index 2de1d9603ff..cc02b0741df 100644 --- a/tests/plots/test_declarative.py +++ b/tests/plots/test_declarative.py @@ -536,6 +536,7 @@ def test_declarative_upa_obs(): obs.locations = ['NW', 'SW', 'NE'] obs.formats = [None, None, lambda v: format(v, '.0f')[:3]] obs.vector_field = ('u_wind', 'v_wind') + obs.vector_field_length = 7 obs.reduce_points = 0 # Panel for plot with Map features