code: def complex_data(data, edata=None, draw=True, **kwargs):
      
      _pylab.ioff()
  
      # generate the data the easy way
      try:
          rdata = _n.real(data)
          idata = _n.imag(data)
          if edata is None:
              erdata = None
              eidata = None
          else:
              erdata = _n.real(edata)
              eidata = _n.imag(edata)
  
      # generate the data the hard way.
      except:
          rdata = []
          idata = []
          if edata is None:
              erdata = None
              eidata = None
          else:
              erdata = []
              eidata = []
  
          for n in range(len(data)):
              rdata.append(_n.real(data[n]))
              idata.append(_n.imag(data[n]))
  
              if not edata is None:
                  erdata.append(_n.real(edata[n]))
                  eidata.append(_n.imag(edata[n]))
  
      if 'xlabel' not in kwargs:    kwargs['xlabel'] = 'Real'
      if 'ylabel' not in kwargs:    kwargs['ylabel'] = 'Imaginary'
  
      xy_data(rdata, idata, eidata, erdata, draw=False, **kwargs)
  
      if draw:
          _pylab.ion()
          _pylab.draw()
          _pylab.show()
docs: Plots the imaginary vs real for complex data.
  
      Parameters
      ----------
      data             
          Array of complex data
      edata=None       
          Array of complex error bars
      draw=True
          Draw the plot after it's assembled?
      See spinmob.plot.xy.data() for additional optional keyword arguments.