From 0af7ef55af368abe2b53c8d472294bd8e06d1258 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Mon, 31 Oct 2022 18:51:24 -0400 Subject: [PATCH] Backport PR #24259: Move empty hexbin fix to make_norm_from_scale. --- lib/matplotlib/axes/_axes.py | 4 +--- lib/matplotlib/colors.py | 4 ++++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index dad927831790..59b685224d9c 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -4959,9 +4959,7 @@ def reduce_C_function(C: array) -> float # autoscale the norm with current accum values if it hasn't been set if norm is not None: if norm.vmin is None and norm.vmax is None: - norm.autoscale_None(accum) - norm.vmin = np.ma.masked if norm.vmin is None else norm.vmin - norm.vmax = np.ma.masked if norm.vmax is None else norm.vmax + norm.autoscale(accum) if bins is not None: if not np.iterable(bins): diff --git a/lib/matplotlib/colors.py b/lib/matplotlib/colors.py index f8a18443c9e0..3804a9bbfbe9 100644 --- a/lib/matplotlib/colors.py +++ b/lib/matplotlib/colors.py @@ -1718,10 +1718,14 @@ def inverse(self, value): def autoscale(self, A): # i.e. A[np.isfinite(...)], but also for non-array A's in_trf_domain = np.extract(np.isfinite(self._trf.transform(A)), A) + if in_trf_domain.size == 0: + in_trf_domain = np.ma.masked return super().autoscale(in_trf_domain) def autoscale_None(self, A): in_trf_domain = np.extract(np.isfinite(self._trf.transform(A)), A) + if in_trf_domain.size == 0: + in_trf_domain = np.ma.masked return super().autoscale_None(in_trf_domain) if base_norm_cls is Normalize: