Skip to content

Commit 847e595

Browse files
committed
Move empty hexbin fix to make_norm_from_scale.
3d2ffef added special-casing to handle empty log-scale hexbins, but the more back-compatible fix is to switch make_norm_from_scale to reproduce the old behavior of setting vmin/vmax to np.ma.masked when autoscaling with an empty array. (Whether that behavior is really better is unclear, but until this is properly investigated, it seems safer to go back to it.)
1 parent 534077d commit 847e595

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

lib/matplotlib/axes/_axes.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4993,9 +4993,7 @@ def reduce_C_function(C: array) -> float
49934993
# autoscale the norm with current accum values if it hasn't been set
49944994
if norm is not None:
49954995
if norm.vmin is None and norm.vmax is None:
4996-
norm.autoscale_None(accum)
4997-
norm.vmin = np.ma.masked if norm.vmin is None else norm.vmin
4998-
norm.vmax = np.ma.masked if norm.vmax is None else norm.vmax
4996+
norm.autoscale(accum)
49994997

50004998
if bins is not None:
50014999
if not np.iterable(bins):

lib/matplotlib/colors.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1718,10 +1718,14 @@ def inverse(self, value):
17181718
def autoscale(self, A):
17191719
# i.e. A[np.isfinite(...)], but also for non-array A's
17201720
in_trf_domain = np.extract(np.isfinite(self._trf.transform(A)), A)
1721+
if in_trf_domain.size == 0:
1722+
in_trf_domain = np.ma.masked
17211723
return super().autoscale(in_trf_domain)
17221724

17231725
def autoscale_None(self, A):
17241726
in_trf_domain = np.extract(np.isfinite(self._trf.transform(A)), A)
1727+
if in_trf_domain.size == 0:
1728+
in_trf_domain = np.ma.masked
17251729
return super().autoscale_None(in_trf_domain)
17261730

17271731
if base_norm_cls is Normalize:

0 commit comments

Comments
 (0)