Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork7.9k
Closed
Labels
Description
Bug report
Bug summary
When doing scatter plot ofnan
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 inc921e2e
xs,ys,zs,s,c=cbook.delete_masked_points(xs,ys,zs,s,c) |
Code for reproduction
We hit this bug inmne-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.
importmatplotlib.pyplotaspltimportnumpyasnpn_points=4xs=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]: %pasteimport matplotlib.pyplot as pltimport numpy as npn_points = 4xs = 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 overc
In [9]: matplotlib.__version__Out[9]:'3.0.1'In [10]: %pasteimport matplotlib.pyplot as pltimport numpy as npn_points = 4xs = 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 Noneelse {}),**kwargs) File"/home/sik/miniconda3/envs/mne/lib/python3.6/site-packages/matplotlib/__init__.py", line 1805,in innerreturn 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 acceptablefor use with'x' with size 4,'y' with size 4.