diff --git a/lib/matplotlib/axis.py b/lib/matplotlib/axis.py index ac6bf3425c41..fd92bb5c5214 100644 --- a/lib/matplotlib/axis.py +++ b/lib/matplotlib/axis.py @@ -1498,6 +1498,10 @@ def have_units(self): return self.converter is not None or self.units is not None def convert_units(self, x): + # If x is already a number, doesn't need converting + if munits.ConversionInterface.is_numlike(x): + return x + if self.converter is None: self.converter = munits.registry.get_converter(x) diff --git a/lib/matplotlib/dates.py b/lib/matplotlib/dates.py index f71f12eea32e..702959e2feab 100644 --- a/lib/matplotlib/dates.py +++ b/lib/matplotlib/dates.py @@ -1738,8 +1738,6 @@ def convert(value, unit, axis): The *unit* and *axis* arguments are not used. """ - if units.ConversionInterface.is_numlike(value): - return value return date2num(value) @staticmethod diff --git a/lib/matplotlib/tests/test_units.py b/lib/matplotlib/tests/test_units.py index f72ac2c60476..14e8341e4b5d 100644 --- a/lib/matplotlib/tests/test_units.py +++ b/lib/matplotlib/tests/test_units.py @@ -31,7 +31,10 @@ def __getattr__(self, attr): return getattr(self.magnitude, attr) def __getitem__(self, item): - return Quantity(self.magnitude[item], self.units) + if iterable(self.magnitude): + return Quantity(self.magnitude[item], self.units) + else: + return Quantity(self.magnitude, self.units) def __array__(self): return np.asarray(self.magnitude)