code: def autoscale_subplots(subplots=None, axis='both'):
      
      axis_options = ('x', 'y', 'both', 'none', '', 'xy', 'yx')
      if axis.lower() not in axis_options:
          raise ValueError('axis must be in {0}'.format(axis_options))
  
      if subplots is None:
          subplots = plt.gcf().axes
  
      data_limits = [(ax.xaxis.get_data_interval(), ax.yaxis.get_data_interval()) for loc, ax in
                     numpy.ndenumerate(subplots)]  # TODO: Make a proper iterator
      xlims, ylims = zip(*data_limits)
  
      xmins_list, xmaxs_list = zip(*xlims)
      ymins_list, ymaxs_list = zip(*ylims)
  
      xmin = numpy.min(xmins_list)
      xmax = numpy.max(xmaxs_list)
  
      ymin = numpy.min(ymins_list)
      ymax = numpy.max(ymaxs_list)
  
      for loc, ax in numpy.ndenumerate(subplots):
          if axis in ('x', 'both', 'xy', 'yx'):
              ax.set_xlim((xmin, xmax))
          if axis in ('y', 'both', 'xy', 'yx'):
              ax.set_ylim((ymin, ymax))
docs: Sets the x and y axis limits for each subplot to match the x and y axis
      limits of the most extreme data points encountered.
  
      The limits are set to the same values for all subplots.
  
      Parameters
      -----------
      subplots : ndarray or list of matplotlib.axes.Axes
  
      axis : ['x' | 'y' | 'both' / 'xy' / 'yx' | 'none' / '']
          'x' : autoscales the x axis
          'y' : autoscales the y axis
          'both', 'xy', 'yx' : autoscales both axis
          'none', '' : autoscales nothing