-
-
Notifications
You must be signed in to change notification settings - Fork 7.9k
Move empty hexbin fix to make_norm_from_scale. #24259
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
lib/matplotlib/colors.py
Outdated
@@ -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 not in_trf_domain.size: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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
pytest
passes).flake8-docstrings
and 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).