forked from pool/python-matplotlib
		
	This commit is contained in:
		| @@ -1,60 +0,0 @@ | ||||
| From 29ce2c226aafc170cb9b874e81b158c832322cf7 Mon Sep 17 00:00:00 2001 | ||||
| From: Jody Klymak <jklymak@gmail.com> | ||||
| Date: Thu, 5 May 2022 04:38:49 +0000 | ||||
| Subject: [PATCH] FIX: fix check_1d to also check for ndim | ||||
|  | ||||
| Arrays sometimes don't have all the methods arrays should have, so | ||||
| add another check here.  Plot requires both ndim and shape and this | ||||
| will extract the numpy array if x does not have those attributes. | ||||
| Otherwise leave the object alone, because unit support (currently only | ||||
| in plot) requires the object to retain the unit info. | ||||
| --- | ||||
|  lib/matplotlib/cbook/__init__.py   |  7 ++++++- | ||||
|  lib/matplotlib/tests/test_units.py | 19 +++++++++++++++++++ | ||||
|  2 files changed, 25 insertions(+), 1 deletion(-) | ||||
|  | ||||
| diff --git a/lib/matplotlib/cbook/__init__.py b/lib/matplotlib/cbook/__init__.py | ||||
| index 774643fc9c99..5a955ed459c5 100644 | ||||
| --- a/lib/matplotlib/cbook/__init__.py | ||||
| +++ b/lib/matplotlib/cbook/__init__.py | ||||
| @@ -1333,7 +1333,12 @@ def _check_1d(x): | ||||
|      """Convert scalars to 1D arrays; pass-through arrays as is.""" | ||||
|      # Unpack in case of e.g. Pandas or xarray object | ||||
|      x = _unpack_to_numpy(x) | ||||
| -    if not hasattr(x, 'shape') or len(x.shape) < 1: | ||||
| +    # plot requires `shape` and `ndim`.  If passed an | ||||
| +    # object that doesn't provide them, then force to numpy array. | ||||
| +    # Note this will strip unit information. | ||||
| +    if (not hasattr(x, 'shape') or | ||||
| +            not hasattr(x, 'ndim') or | ||||
| +            len(x.shape) < 1): | ||||
|          return np.atleast_1d(x) | ||||
|      else: | ||||
|          return x | ||||
| diff --git a/lib/matplotlib/tests/test_units.py b/lib/matplotlib/tests/test_units.py | ||||
| index 93a12cebb2c8..d3b8c5a71643 100644 | ||||
| --- a/lib/matplotlib/tests/test_units.py | ||||
| +++ b/lib/matplotlib/tests/test_units.py | ||||
| @@ -264,3 +264,22 @@ def test_empty_default_limits(quantity_converter): | ||||
|      fig.draw_without_rendering() | ||||
|      assert ax.get_ylim() == (0, 100) | ||||
|      assert ax.get_xlim() == (28.5, 31.5) | ||||
| + | ||||
| + | ||||
| +# test array-like objects... | ||||
| +class Kernel: | ||||
| +    def __init__(self, array): | ||||
| +        self._array = np.asanyarray(array) | ||||
| + | ||||
| +    def __array__(self): | ||||
| +        return self._array | ||||
| + | ||||
| +    @property | ||||
| +    def shape(self): | ||||
| +        return self._array.shape | ||||
| + | ||||
| + | ||||
| +def test_plot_kernel(): | ||||
| +    # just a smoketest that fail | ||||
| +    kernel = Kernel([1, 2, 3, 4, 5]) | ||||
| +    plt.plot(kernel) | ||||
		Reference in New Issue
	
	Block a user