code: def zoom(self, n='all', xfactor=2.0, yfactor=2.0):
          
          if len(self._set_xdata)==0 or len(self._set_ydata)==0:
              self._error("No data. Please use set_data() and plot() prior to zooming.")
              return
  
          # get the data
          xdata, ydata, eydata = self.get_data()
  
          if   _s.fun.is_a_number(n): n = [n]
          elif isinstance(n,str):     n = list(range(len(xdata)))
  
          # loop over the specified plots
          for i in n:
              fig = self['first_figure']+i
              try:
                  xmin, xmax = _p.figure(fig).axes[1].get_xlim()
                  xc = 0.5*(xmin+xmax)
                  xs = 0.5*abs(xmax-xmin)
                  self['xmin'][i] = xc - xfactor*xs
                  self['xmax'][i] = xc + xfactor*xs
  
                  ymin, ymax = _p.figure(fig).axes[1].get_ylim()
                  yc = 0.5*(ymin+ymax)
                  ys = 0.5*abs(ymax-ymin)
                  self['ymin'][i] = yc - yfactor*ys
                  self['ymax'][i] = yc + yfactor*ys
              except:
                  self._error("Data "+str(fig)+" is not currently plotted.")
  
          # now show the update.
          self.clear_results()
          if self['autoplot']: self.plot()
  
          return self
docs: This will scale the chosen data set's plot range by the
          specified xfactor and yfactor, respectively, and set the trim limits
          xmin, xmax, ymin, ymax accordingly
  
          Parameters
          ----------
          n='all'     
              Which data set to perform this action upon. 'all' means all data
              sets, or you can specify a list.
          xfactor=2.0
              Factor by which to scale the x range.
          yfactor=2.0
              Factor by which to scale the y range.