Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit fb119a1

Browse files
committed
added errorevery keyword for errorbar()
1 parent 1cd07a6 commit fb119a1

File tree

1 file changed

+30
-15
lines changed

1 file changed

+30
-15
lines changed

lib/matplotlib/axes.py

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5107,7 +5107,7 @@ def pie(self, x, explode=None, labels=None, colors=None,
51075107
def errorbar(self, x, y, yerr=None, xerr=None,
51085108
fmt='-', ecolor=None, elinewidth=None, capsize=3,
51095109
barsabove=False, lolims=False, uplims=False,
5110-
xlolims=False, xuplims=False, **kwargs):
5110+
xlolims=False, xuplims=False, errorevery=1, **kwargs):
51115111
"""
51125112
call signature::
51135113
@@ -5156,6 +5156,10 @@ def errorbar(self, x, y, yerr=None, xerr=None,
51565156
only upper/lower limits. In that case a caret symbol is
51575157
used to indicate this. lims-arguments may be of the same
51585158
type as *xerr* and *yerr*.
5159+
5160+
*errorevery*: positive integer
5161+
subsamples the errorbars. Eg if everyerror=5, errorbars for every
5162+
5-th datapoint will be plotted.
51595163
51605164
All other keyword arguments are passed on to the plot command for the
51615165
markers. For example, this code makes big red squares with
@@ -5246,6 +5250,8 @@ def errorbar(self, x, y, yerr=None, xerr=None,
52465250
if not iterable(xuplims): xuplims = np.array([xuplims]*len(x), bool)
52475251
else: xuplims = np.asarray(xuplims, bool)
52485252

5253+
everymask = np.arange(len(x)) % errorevery == 0
5254+
52495255
def xywhere(xs, ys, mask):
52505256
"""
52515257
return xs[mask], ys[mask] where mask is True but xs and
@@ -5284,33 +5290,38 @@ def xywhere(xs, ys, mask):
52845290
right = [thisx+thiserr for (thisx, thiserr)
52855291
in cbook.safezip(x,xerr)]
52865292

5287-
barcols.append( self.hlines(y, left, right, **lines_kw ) )
5293+
yo, _ = xywhere(y, right, everymask)
5294+
lo, ro= xywhere(left, right, everymask)
5295+
barcols.append( self.hlines(yo, lo, ro, **lines_kw ) )
52885296
if capsize > 0:
52895297
if xlolims.any():
52905298
# can't use numpy logical indexing since left and
52915299
# y are lists
5292-
leftlo, ylo = xywhere(left, y, xlolims)
5300+
leftlo, ylo = xywhere(left, y, xlolims & everymask)
52935301

52945302
caplines.extend(
52955303
self.plot(leftlo, ylo, ls='None',
52965304
marker=mlines.CARETLEFT, **plot_kw) )
52975305
xlolims = ~xlolims
5298-
leftlo, ylo = xywhere(left, y, xlolims)
5306+
leftlo, ylo = xywhere(left, y, xlolims & everymask)
52995307
caplines.extend( self.plot(leftlo, ylo, 'k|', **plot_kw) )
53005308
else:
5301-
caplines.extend( self.plot(left, y, 'k|', **plot_kw) )
5309+
5310+
leftlo, ylo = xywhere(left, y, everymask)
5311+
caplines.extend( self.plot(leftlo, ylo, 'k|', **plot_kw) )
53025312

53035313
if xuplims.any():
53045314

5305-
rightup, yup = xywhere(right, y, xuplims)
5315+
rightup, yup = xywhere(right, y, xuplims & everymask)
53065316
caplines.extend(
53075317
self.plot(rightup, yup, ls='None',
53085318
marker=mlines.CARETRIGHT, **plot_kw) )
53095319
xuplims = ~xuplims
5310-
rightup, yup = xywhere(right, y, xuplims)
5320+
rightup, yup = xywhere(right, y, xuplims & everymask)
53115321
caplines.extend( self.plot(rightup, yup, 'k|', **plot_kw) )
53125322
else:
5313-
caplines.extend( self.plot(right, y, 'k|', **plot_kw) )
5323+
rightup, yup = xywhere(right, y, everymask)
5324+
caplines.extend( self.plot(rightup, yup, 'k|', **plot_kw) )
53145325

53155326
if yerr is not None:
53165327
if (iterable(yerr) and len(yerr)==2 and
@@ -5327,31 +5338,35 @@ def xywhere(xs, ys, mask):
53275338
upper = [thisy+thiserr for (thisy, thiserr)
53285339
in cbook.safezip(y,yerr)]
53295340

5330-
barcols.append( self.vlines(x, lower, upper, **lines_kw) )
5341+
xo, _ = xywhere(x, lower, everymask)
5342+
lo, uo= xywhere(lower, upper, everymask)
5343+
barcols.append( self.vlines(xo, lo, uo, **lines_kw) )
53315344
if capsize > 0:
53325345

53335346
if lolims.any():
5334-
xlo, lowerlo = xywhere(x, lower, lolims)
5347+
xlo, lowerlo = xywhere(x, lower, lolims & everymask)
53355348
caplines.extend(
53365349
self.plot(xlo, lowerlo, ls='None',
53375350
marker=mlines.CARETDOWN, **plot_kw) )
53385351
lolims = ~lolims
5339-
xlo, lowerlo = xywhere(x, lower, lolims)
5352+
xlo, lowerlo = xywhere(x, lower, lolims & everymask)
53405353
caplines.extend( self.plot(xlo, lowerlo, 'k_', **plot_kw) )
53415354
else:
5342-
caplines.extend( self.plot(x, lower, 'k_', **plot_kw) )
5355+
xlo, lowerlo = xywhere(x, lower, everymask)
5356+
caplines.extend( self.plot(xlo, lowerlo, 'k_', **plot_kw) )
53435357

53445358
if uplims.any():
5345-
xup, upperup = xywhere(x, upper, uplims)
5359+
xup, upperup = xywhere(x, upper, uplims & everymask)
53465360

53475361
caplines.extend(
53485362
self.plot(xup, upperup, ls='None',
53495363
marker=mlines.CARETUP, **plot_kw) )
53505364
uplims = ~uplims
5351-
xup, upperup = xywhere(x, upper, uplims)
5365+
xup, upperup = xywhere(x, upper, uplims & everymask)
53525366
caplines.extend( self.plot(xup, upperup, 'k_', **plot_kw) )
53535367
else:
5354-
caplines.extend( self.plot(x, upper, 'k_', **plot_kw) )
5368+
xup, upperup = xywhere(x, upper, everymask)
5369+
caplines.extend( self.plot(xup, upperup, 'k_', **plot_kw) )
53555370

53565371
if not barsabove and fmt is not None:
53575372
l0, = self.plot(x,y,fmt,**kwargs)

0 commit comments

Comments
 (0)