The function ax.errorbar raises a StopIteration error when yerr contains only NaN values.
import matplotlib.pyplot as plt import numpy as np fig, ax = plt.subplots(1, 1) ax.errorbar([0], [0], [np.nan])
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)) StopIteration
No crash, similar to the case where only some values are NaN.
This happens because _upcast_err unconditionally looks for a first finite element in xerr and yerr.
Debian
3.6.2
TkAgg
3.9.2
No response
pip
Possible duplicate of #18294.
Activity
rcomer commented on Dec 26, 2022
Possible duplicate of #18294.