Closed
Description
Bug report
Bug summary
When doing scatter plot of nan
values it crashes because the list of colors gets overwriten to an empty list by this line:
matplotlib/lib/mpl_toolkits/mplot3d/axes3d.py
Line 2317 in c921e2e
Code for reproduction
We hit this bug in mne-tools/mne-python#5676, but here is a MWE. Most probably this is a duplicated of #12641. In which case, this can be used as a test.
import matplotlib.pyplot as plt
import numpy as np
n_points = 4
xs = ys = zs = np.full(n_points, np.nan)
colors = list(np.full(2, 'k'))
plt.scatter(xs, ys, zs, c=colors)
plt.show()
Expected outcome
(As in matplotlib 2.2.2) we would expect an empty plot with no error
In [25]: matplotlib.__version__
Out[25]: '2.2.2'
In [26]: %paste
import matplotlib.pyplot as plt
import numpy as np
n_points = 4
xs = ys = zs = np.full(n_points, np.nan)
colors = list(np.full(2, 'k'))
plt.scatter(xs, ys, zs, c=colors)
plt.show()
## -- End pasted text --
In [27]:
Actual outcome
It breaks because cannot iterate over c
In [9]: matplotlib.__version__
Out[9]: '3.0.1'
In [10]: %paste
import matplotlib.pyplot as plt
import numpy as np
n_points = 4
xs = ys = zs = np.full(n_points, np.nan)
colors = list(np.full(2, 'k'))
plt.scatter(xs, ys, zs, c=colors)
plt.show()
## -- End pasted text --
Traceback (most recent call last):
File "<ipython-input-10-f59e87d45c38>", line 7, in <module>
plt.scatter(xs, ys, zs, c=colors)
File "/home/sik/miniconda3/envs/mne/lib/python3.6/site-packages/matplotlib/pyplot.py", line 2864, in scatter
is not None else {}), **kwargs)
File "/home/sik/miniconda3/envs/mne/lib/python3.6/site-packages/matplotlib/__init__.py", line 1805, in inner
return func(ax, *args, **kwargs)
File "/home/sik/miniconda3/envs/mne/lib/python3.6/site-packages/matplotlib/axes/_axes.py", line 4234, in scatter
.format(nc=n_elem, xs=x.size, ys=y.size)
ValueError: 'c' argument has 2 elements, which is not acceptable for use with 'x' with size 4, 'y' with size 4.