Summary
The documentation to ListedColormap states that the input should be a list or array
|
colors : list, array |
|
Sequence of Matplotlib color specifications (color names or RGB(A) |
|
values). |
However, when specifying N, str and float are also supported (if one use the source code)
|
if isinstance(colors, str): |
|
self.colors = [colors] * N |
|
self.monochrome = True |
|
elif np.iterable(colors): |
|
if len(colors) == 1: |
|
self.monochrome = True |
|
self.colors = list( |
|
itertools.islice(itertools.cycle(colors), N)) |
|
else: |
|
try: |
|
gray = float(colors) |
|
except TypeError: |
|
pass |
|
else: |
|
self.colors = [gray] * N |
|
self.monochrome = True |
This means that, e.g., ListedColormap("#aabbcc", N=1) works, but ListedColormap("#aabbcc") does not (there will be weird errors later, like N=7 for the latter). Given that there is monochrome attribute and the documentation of N, one may expect the latter to work as well (if the earlier works). Also, ListedColormap(["#aabbcc"]) will not set the monochrome attribute correctly.
Proposed fix
I think there are three(?) possible solutions:
- Support scalars/strings when N is not provided (and ideally documents that)
- Document that if N is not None, the first argument can be a scalar or string (it is maybe easier to do
ListedColormap(0.3, N=7) than ListedColormap([0.3]*7) or at least require slightly less Python knowledge)
- Deprecate scalar/string argument
Bonus: document the color and monochrome attributes
Summary
The documentation to
ListedColormapstates that the input should be a list or arraymatplotlib/lib/matplotlib/colors.py
Lines 1175 to 1177 in b01462c
However, when specifying N,
strandfloatare also supported (if one use the source code)matplotlib/lib/matplotlib/colors.py
Lines 1199 to 1214 in b01462c
This means that, e.g.,
ListedColormap("#aabbcc", N=1)works, butListedColormap("#aabbcc")does not (there will be weird errors later, likeN=7for the latter). Given that there ismonochromeattribute and the documentation of N, one may expect the latter to work as well (if the earlier works). Also,ListedColormap(["#aabbcc"])will not set themonochromeattribute correctly.Proposed fix
I think there are three(?) possible solutions:
ListedColormap(0.3, N=7)thanListedColormap([0.3]*7)or at least require slightly less Python knowledge)Bonus: document the
colorandmonochromeattributes