-
-
Notifications
You must be signed in to change notification settings - Fork 8.2k
Closed
Milestone
Description
Bug summary
The function ax.errorbar raises a StopIteration error when yerr contains only NaN values.
Code for reproduction
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots(1, 1)
ax.errorbar([0], [0], [np.nan])Actual outcome
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "~/.local/share/virtualenvs/pipeline/lib/python3.9/site-packages/matplotlib/__init__.py", line 1423, in inner
return func(ax, *map(sanitize_sequence, args), **kwargs)
File "~.local/share/virtualenvs/pipeline/lib/python3.9/site-packages/matplotlib/axes/_axes.py", line 3488, in errorbar
yerr = _upcast_err(yerr)
File "~/.local/share/virtualenvs/pipeline/lib/python3.9/site-packages/matplotlib/axes/_axes.py", line 3470, in _upcast_err
isinstance(cbook._safe_first_finite(err), np.ndarray)
File "~/.local/share/virtualenvs/pipeline/lib/python3.9/site-packages/matplotlib/cbook/__init__.py", line 1749, in _safe_first_finite
return next(val for val in obj if safe_isfinite(val))
StopIterationExpected outcome
No crash, similar to the case where only some values are NaN.
Additional information
This happens because _upcast_err unconditionally looks for a first finite element in xerr and yerr.
Operating system
Debian
Matplotlib Version
3.6.2
Matplotlib Backend
TkAgg
Python version
3.9.2
Jupyter version
No response
Installation
pip
Metadata
Metadata
Assignees
Labels
No labels