Skip to content

plt.scatter crashes because overwrites the colors to an empty list #12664

@massich

Description

@massich

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:

xs, ys, zs, s, c = cbook.delete_masked_points(xs, ys, zs, s, c)

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions