Fix singleton hist labels - #12572
Conversation
61d3a37 to
819b99d
Compare
There was a problem hiding this comment.
Rather keep it on one level:
if label is None:
labels = [None]
elif isinstance(label, str):
labels = [label]
elif not np.iterable(label):
labels = [str(label)]
else:
labels = [str(lab) for lab in label]
There was a problem hiding this comment.
Sure - I was hoping it'd have been even simpler, but str(None) returns "None", which ruined my plans.
819b99d to
f38b1c9
Compare
There was a problem hiding this comment.
I think you can combine this case with the one above it
There was a problem hiding this comment.
Unfortunately strings are iterable, so I don't think I can...
In [1]: boo = 'who'
In [2]: import numpy as np
In [3]: np.iterable(boo)
Out[3]: True
There was a problem hiding this comment.
This is exactly the code required to make int labels work.
There was a problem hiding this comment.
My mistake, I thought np.iterable ignored strings. np.ndim(boo) == 0 would work, but is perhaps slower.
There was a problem hiding this comment.
np.ndim looks useful. I quite readily get confused with the best way to test if something is a list, ndarray, or singleton, and our codebase uses a few incantations. I would be fine w/ changing this to something that is an agreed-upon standard way to check. This logic only gets called when a hist is added to the axes, so I don't think we need to worry overly much about performance.

PR Summary
Re-closes #3869
PR Checklist