From 0b05b1fa3a3d0fc6d5f9bea43dd708540f5afee1 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 20 Oct 2022 17:51:04 -0400 Subject: [PATCH] Backport PR #24009: Fix evaluating colormaps on non-numpy arrays --- lib/matplotlib/colors.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/colors.py b/lib/matplotlib/colors.py index 5441b0d617b5..f8a18443c9e0 100644 --- a/lib/matplotlib/colors.py +++ b/lib/matplotlib/colors.py @@ -706,8 +706,12 @@ def __call__(self, X, alpha=None, bytes=False): if not self._isinit: self._init() - mask_bad = X.mask if np.ma.is_masked(X) else np.isnan(X) # Mask nan's. + # Take the bad mask from a masked array, or in all other cases defer + # np.isnan() to after we have converted to an array. + mask_bad = X.mask if np.ma.is_masked(X) else None xa = np.array(X, copy=True) + if mask_bad is None: + mask_bad = np.isnan(xa) if not xa.dtype.isnative: xa = xa.byteswap().newbyteorder() # Native byteorder is faster. if xa.dtype.kind == "f":