FIX: ValueError when hexbin is run with empty arrays and log scaling.#23944
FIX: ValueError when hexbin is run with empty arrays and log scaling.#23944timhoffm merged 3 commits intomatplotlib:mainfrom
Conversation
|
This PR addresses #23922 |
There was a problem hiding this comment.
Thank you for opening your first PR into Matplotlib!
If you have not heard from us in a while, please feel free to ping @matplotlib/developers or anyone who has commented on the PR. Most of our reviewers are volunteers and sometimes things fall through the cracks.
You can also join us on gitter for real-time discussion.
For details on testing, writing docs, and our review process, please see the developer guide
We strive to be a welcoming and open project. Please follow our Code of Conduct.
lib/matplotlib/colors.py
Outdated
| self.vmax = A.max() | ||
| # Ensure that A has non-zero size to compute min/max. | ||
| # Otherwise put in filler values. | ||
| if A.size: |
There was a problem hiding this comment.
This is hitting alot of use cases as all of the color mappables to through here, would it be possible to do this check in hexbin instead?
If we do this here, do we want to use the same logic from the auto limit on the Axis to sure min != max (which I forsee causing divide by 0 errors later)?
lib/matplotlib/colors.py
Outdated
| self.vmax = A.max() | ||
| else: | ||
| self.vmin = 0.0 | ||
| self.vmax = 0.0 |
There was a problem hiding this comment.
Setting these values to zero seems almost certainly wrong; the pre-#21989 behavior was (I think?) to set them to np.ma.masked (I think?) which also seems a bit strange but already better.
|
Please take a look now. I pushed the fix further upstream and also used |
dstansby
left a comment
There was a problem hiding this comment.
Looks good to me - thanks for the PR!
… empty arrays and log scaling.
|
Thanks @erykoff and congratulations on your first contribution to Matplotlib. |
…944-on-v3.6.x Backport PR #23944 on branch v3.6.x (FIX: ValueError when hexbin is run with empty arrays and log scaling.)
…matplotlib#23944) * Add test for empty hexbin with log scaling. * Use guarded autoscale_None for use when vmin/vmax are None. * Add additional check when auto vmin/vmax are None.
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).