@@ -2979,10 +2979,14 @@ def errorbar(self, x, y, yerr=None, xerr=None,
2979
2979
and *yerr*. To use limits with inverted axes, :meth:`set_xlim`
2980
2980
or :meth:`set_ylim` must be called before :meth:`errorbar`.
2981
2981
2982
- errorevery : positive integer, optional, default: 1
2983
- Subsamples the errorbars. e.g., if errorevery=5, errorbars for
2984
- every 5-th datapoint will be plotted. The data plot itself still
2985
- shows all data points.
2982
+ errorevery : int or (int, int), optional, default: 1
2983
+ draws error bars on a subset of the data. *errorevery* =N draws
2984
+ error bars on the points (x[::N], y[::N]).
2985
+ *errorevery* =(start, N) draws error bars on the points
2986
+ (x[start::N], y[start::N]). e.g. errorevery=(6,3)
2987
+ adds error bars to the data at (x[3], x[9], x[15], x[21], ...).
2988
+ Used to avoid overlapping error bars when two series share x-axis
2989
+ values.
2986
2990
2987
2991
Returns
2988
2992
-------
@@ -3027,9 +3031,16 @@ def errorbar(self, x, y, yerr=None, xerr=None,
3027
3031
kwargs = {k: v for k, v in kwargs.items() if v is not None}
3028
3032
kwargs.setdefault('zorder', 2)
3029
3033
3030
- if errorevery < 1:
3031
- raise ValueError(
3032
- 'errorevery has to be a strictly positive integer')
3034
+ try:
3035
+ offset, errorevery = errorevery
3036
+ except TypeError:
3037
+ offset = 0
3038
+
3039
+ int_msg = 'errorevery must be positive integer or tuple of integers'
3040
+ if errorevery < 1 or int(errorevery) != errorevery:
3041
+ raise ValueError(int_msg)
3042
+ if int(offset) != offset:
3043
+ raise ValueError(int_msg)
3033
3044
3034
3045
self._process_unit_info(xdata=x, ydata=y, kwargs=kwargs)
3035
3046
@@ -3138,7 +3149,8 @@ def errorbar(self, x, y, yerr=None, xerr=None,
3138
3149
xlolims = np.broadcast_to(xlolims, len(x)).astype(bool)
3139
3150
xuplims = np.broadcast_to(xuplims, len(x)).astype(bool)
3140
3151
3141
- everymask = np.arange(len(x)) % errorevery == 0
3152
+ everymask = np.zeros(len(x), bool)
3153
+ everymask[offset::errorevery] = True
3142
3154
3143
3155
def xywhere(xs, ys, mask):
3144
3156
"""
0 commit comments