code: def plot_drawdown_periods(returns, top=10, ax=None, **kwargs):
      
  
      if ax is None:
          ax = plt.gca()
  
      y_axis_formatter = FuncFormatter(utils.two_dec_places)
      ax.yaxis.set_major_formatter(FuncFormatter(y_axis_formatter))
  
      df_cum_rets = ep.cum_returns(returns, starting_value=1.0)
      df_drawdowns = timeseries.gen_drawdown_table(returns, top=top)
  
      df_cum_rets.plot(ax=ax, **kwargs)
  
      lim = ax.get_ylim()
      colors = sns.cubehelix_palette(len(df_drawdowns))[::-1]
      for i, (peak, recovery) in df_drawdowns[
              ['Peak date', 'Recovery date']].iterrows():
          if pd.isnull(recovery):
              recovery = returns.index[-1]
          ax.fill_between((peak, recovery),
                          lim[0],
                          lim[1],
                          alpha=.4,
                          color=colors[i])
      ax.set_ylim(lim)
      ax.set_title('Top %i drawdown periods' % top)
      ax.set_ylabel('Cumulative returns')
      ax.legend(['Portfolio'], loc='upper left',
                frameon=True, framealpha=0.5)
      ax.set_xlabel('')
      return ax
docs: Plots cumulative returns highlighting top drawdown periods.
  
      Parameters
      ----------
      returns : pd.Series
          Daily returns of the strategy, noncumulative.
           - See full explanation in tears.create_full_tear_sheet.
      top : int, optional
          Amount of top drawdowns periods to plot (default 10).
      ax : matplotlib.Axes, optional
          Axes upon which to plot.
      **kwargs, optional
          Passed to plotting function.
  
      Returns
      -------
      ax : matplotlib.Axes
          The axes that were plotted on.