code: def bootstrap_plot(series, fig=None, size=50, samples=500, **kwds):
      """
      Bootstrap plot on mean, median and mid-range statistics.
  
      The bootstrap plot is used to estimate the uncertainty of a statistic
      by relaying on random sampling with replacement [1]_. This function will
      generate bootstrapping plots for mean, median and mid-range statistics
      for the given number of samples of the given size.
  
      .. [1] "Bootstrapping (statistics)" in \
      https://en.wikipedia.org/wiki/Bootstrapping_%28statistics%29
  
      Parameters
      ----------
      series : pandas.Series
          Pandas Series from where to get the samplings for the bootstrapping.
      fig : matplotlib.figure.Figure, default None
          If given, it will use the `fig` reference for plotting instead of
          creating a new one with default parameters.
      size : int, default 50
          Number of data points to consider during each sampling. It must be
          greater or equal than the length of the `series`.
      samples : int, default 500
          Number of times the bootstrap procedure is performed.
      **kwds :
          Options to pass to matplotlib plotting method.
  
      Returns
      -------
      fig : matplotlib.figure.Figure
          Matplotlib figure
  
      See Also
      --------
      pandas.DataFrame.plot : Basic plotting for DataFrame objects.
      pandas.Series.plot : Basic plotting for Series objects.
  
      Examples
      --------
  
      .. plot::
              :context: close-figs
  
              >>> s = pd.Series(np.random.uniform(size=100))
              >>> fig = pd.plotting.bootstrap_plot(s)  # doctest: +SKIP
      """
      import random
      import matplotlib.pyplot as plt
  
      # random.sample(ndarray, int) fails on python 3.3, sigh
      data = list(series.values)
      samplings = [random.sample(data, size) for _ in range(samples)]
  
      means = np.array([np.mean(sampling) for sampling in samplings])
      medians = np.array(
          [np.median(sampling) for sampling in samplings]
      )
      midranges = np.array(
          [
              (min(sampling) + max(sampling)) * 0.5
              for sampling in samplings
          ]
      )
      if fig is None:
          fig = plt.figure()
      x = lrange(samples)
      axes = []
      ax1 = fig.add_subplot(2, 3, 1)
      ax1.set_xlabel("Sample")
      axes.append(ax1)
      ax1.plot(x, means, **kwds)
      ax2 = fig.add_subplot(2, 3, 2)
      ax2.set_xlabel("Sample")
      axes.append(ax2)
      ax2.plot(x, medians, **kwds)
      ax3 = fig.add_subplot(2, 3, 3)
      ax3.set_xlabel("Sample")
      axes.append(ax3)
      ax3.plot(x, midranges, **kwds)
      ax4 = fig.add_subplot(2, 3, 4)
      ax4.set_xlabel("Mean")
      axes.append(ax4)
      ax4.hist(means, **kwds)
      ax5 = fig.add_subplot(2, 3, 5)
      ax5.set_xlabel("Median")
      axes.append(ax5)
      ax5.hist(medians, **kwds)
      ax6 = fig.add_subplot(2, 3, 6)
      ax6.set_xlabel("Midrange")
      axes.append(ax6)
      ax6.hist(midranges, **kwds)
      for axis in axes:
          plt.setp(axis.get_xticklabels(), fontsize=8)
          plt.setp(axis.get_yticklabels(), fontsize=8)
      return fig
  
file_path: catboost/contrib/python/pandas/py2/pandas/plotting/_misc.py
imports: from __future__ import division
  import numpy
  from pandas.compat import lmap, lrange, range, zip
  from pandas.util._decorators import deprecate_kwarg
  from pandas.core.dtypes.missing import notna
  from pandas.io.formats.printing import pprint_thing
  from pandas.plotting._style import _get_standard_colors
  from pandas.plotting._tools import _set_ticks_props, _subplots
label_desc: Use image node_id 5 for calling a global function with example usage: bootstrap_plot(series, fig, size, samples) and returns: fig