code: def __expand_limits(ax, limits, which='x'):
      '''Helper function to expand axis limits'''
  
      if which == 'x':
          getter, setter = ax.get_xlim, ax.set_xlim
      elif which == 'y':
          getter, setter = ax.get_ylim, ax.set_ylim
      else:
          raise ValueError('invalid axis: {}'.format(which))
  
      old_lims = getter()
      new_lims = list(limits)
  
      # infinite limits occur on new axis objects with no data
      if np.isfinite(old_lims[0]):
          new_lims[0] = min(old_lims[0], limits[0])
  
      if np.isfinite(old_lims[1]):
          new_lims[1] = max(old_lims[1], limits[1])
  
      setter(new_limsf __expand_limits(ax, limits, which='x'):
      '''Helper function to expand axis limits'''
  
      if which == 'x':
          getter, setter = ax.get_xlim, ax.set_xlim
      elif which == 'y':
          getter, setter = ax.get_ylim, ax.set_ylim
      else:
          raise ValueError('invalid axis: {}'.format(which))
  
      old_lims = getter()
      new_lims = list(limits)
  
      # infinite limits occur on new axis objects with no data
      if np.isfinite(old_lims[0]):
          new_lims[0] = min(old_lims[0], limits[0])
  
      if np.isfinite(old_lims[1]):
          new_lims[1] = max(old_lims[1], limits[1])
  
      setter(new_lims)
docs: Helper function to expand axis limits