@@ -3146,10 +3146,14 @@ def errorbar(self, x, y, yerr=None, xerr=None,
3146
3146
and *yerr*. To use limits with inverted axes, :meth:`set_xlim`
3147
3147
or :meth:`set_ylim` must be called before :meth:`errorbar`.
3148
3148
3149
- errorevery : positive integer, optional, default: 1
3150
- Subsamples the errorbars. e.g., if errorevery=5, errorbars for
3151
- every 5-th datapoint will be plotted. The data plot itself still
3152
- shows all data points.
3149
+ errorevery : int or (int, int), optional, default: 1
3150
+ draws error bars on a subset of the data. *errorevery* =N draws
3151
+ error bars on the points (x[::N], y[::N]).
3152
+ *errorevery* =(start, N) draws error bars on the points
3153
+ (x[start::N], y[start::N]). e.g. errorevery=(6,3)
3154
+ adds error bars to the data at (x[3], x[9], x[15], x[21], ...).
3155
+ Used to avoid overlapping error bars when two series share x-axis
3156
+ values.
3153
3157
3154
3158
Returns
3155
3159
-------
@@ -3194,9 +3198,16 @@ def errorbar(self, x, y, yerr=None, xerr=None,
3194
3198
kwargs = {k : v for k , v in kwargs .items () if v is not None }
3195
3199
kwargs .setdefault ('zorder' , 2 )
3196
3200
3197
- if errorevery < 1 :
3198
- raise ValueError (
3199
- 'errorevery has to be a strictly positive integer' )
3201
+ try :
3202
+ offset , errorevery = errorevery
3203
+ except TypeError :
3204
+ offset = 0
3205
+
3206
+ int_msg = 'errorevery must be positive integer or tuple of integers'
3207
+ if errorevery < 1 or int (errorevery ) != errorevery :
3208
+ raise ValueError (int_msg )
3209
+ if int (offset ) != offset :
3210
+ raise ValueError (int_msg )
3200
3211
3201
3212
self ._process_unit_info (xdata = x , ydata = y , kwargs = kwargs )
3202
3213
@@ -3305,7 +3316,8 @@ def errorbar(self, x, y, yerr=None, xerr=None,
3305
3316
xlolims = np .broadcast_to (xlolims , len (x )).astype (bool )
3306
3317
xuplims = np .broadcast_to (xuplims , len (x )).astype (bool )
3307
3318
3308
- everymask = np .arange (len (x )) % errorevery == 0
3319
+ everymask = np .zeros (len (x ), bool )
3320
+ everymask [offset ::errorevery ] = True
3309
3321
3310
3322
def xywhere (xs , ys , mask ):
3311
3323
"""
0 commit comments