code: def reduce_ticks(ax, which, maxticks=3):
      
      ticks = getattr(ax, 'get_{}ticks'.format(which))()
      if len(ticks) > maxticks:
          # make sure the left/right value is not at the edge
          minax, maxax = getattr(ax, 'get_{}lim'.format(which))()
          dw = abs(maxax-minax)/10.
          start_idx, end_idx = 0, len(ticks)
          if ticks[0] < minax + dw:
              start_idx += 1
          if ticks[-1] > maxax - dw:
              end_idx -= 1
          # get reduction factor
          fac = int(len(ticks) / maxticks)
          ticks = ticks[start_idx:end_idx:fac]
      return ticks
docs: Given a pyplot axis, resamples its `which`-axis ticks such that are at most
      `maxticks` left.
  
      Parameters
      ----------
      ax : axis
          The axis to adjust.
      which : {'x' | 'y'}
          Which axis to adjust.
      maxticks : {3, int}
          Maximum number of ticks to use.
  
      Returns
      -------
      array
          An array of the selected ticks.