-
-
Notifications
You must be signed in to change notification settings - Fork 7.9k
Closed
Labels
Good first issueOpen a pull request against these issues if there are no active ones!Open a pull request against these issues if there are no active ones!topic: collections and mappables
Milestone
Description
Bug summary
In #20752 I added support for imshow(..., norm="log")
, and documented that the feature is supported in particular by hexbin as well; but this doesn't actually work for hexbin, because hexbin tries to run stuff on the norm before normalizing strings.
Code for reproduction
from pylab import *
hexbin(rand(100), rand(100), norm="log")
Actual outcome
File ".../matplotlib/axes/_axes.py", line 5247, in hexbin
if norm.vmin is None and norm.vmax is None:
^^^^^^^^^
AttributeError: 'str' object has no attribute 'vmin'
Expected outcome
no error
Additional information
Probably the block
# 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(accum)
can just be moved down a bit after collection.set_norm(norm) (then we can get back the canonicalized norm from the collection). I haven't looked at how this interacts with the call to _scale_norm just below, though.
Operating system
any
Matplotlib Version
3.9.0.dev1523+g2723052176
Matplotlib Backend
any
Python version
3.12
Jupyter version
no
Installation
None
Metadata
Metadata
Assignees
Labels
Good first issueOpen a pull request against these issues if there are no active ones!Open a pull request against these issues if there are no active ones!topic: collections and mappables