Move empty hexbin fix to make_norm_from_scale.#24259
Conversation
| 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 not in_trf_domain.size: |
There was a problem hiding this comment.
This changes this for everything that uses autoscale; is that OK? I guess its not failing any tests, but our masked tests were not terribly complete.
I find not in_trf_domain.size enigmatic - I assume it is None if there was nothing to extract? Maybe add a comment...
There was a problem hiding this comment.
is that OK?
AFAICT this simply reverts to the pre 3.6 behavior, which had been accidentally changed.
not in_trf_domain.size
Sure, changed.
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.)
|
I do wonder about our continued support of |
|
I personally don't care much about masked arrays, but IIRC @efiring was a proponent (sorry if I got this wrong). |
…259-on-v3.6.x Backport PR #24259 on branch v3.6.x (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.)
See #23944, #23922.
PR Summary
PR Checklist
Tests and Styling
pytestpasses).flake8-docstringsand runflake8 --docstring-convention=all).Documentation
doc/users/next_whats_new/(follow instructions in README.rst there).doc/api/next_api_changes/(follow instructions in README.rst there).