code: def plot(self, data=None, **kwargs):
          
  
          # import plot here to avoid circular imports
          from .plot.plot import plot as plotter
  
          if data is None:
              d = copy.copy(self.data)
              transform = copy.copy(self.xform_data)
              if any([k in kwargs for k in ['reduce', 'align', 'normalize',
                                            'semantic', 'vectorizer', 'corpus']]):
                  d = copy.copy(self.data)
                  transform = None
          else:
              d = data
              transform = None
  
          # get kwargs and update with new kwargs
          new_kwargs = copy.copy(self.kwargs)
          update_kwargs = dict(transform=transform, reduce=self.reduce,
                         align=self.align, normalize=self.normalize,
                         semantic=self.semantic, vectorizer=self.vectorizer,
                         corpus=self.corpus)
          new_kwargs.update(update_kwargs)
          for key in kwargs:
              new_kwargs.update({key : kwargs[key]})
          return plotter(d, **new_kwargs)
docs: Plot the data
  
          Parameters
          ----------
          data : numpy array, pandas dataframe or list of arrays/dfs
              The data to plot.  If no data is passed, the xform_data from
              the DataGeometry object will be returned.
  
          kwargs : keyword arguments
              Any keyword arguments supported by `hypertools.plot` are also supported
              by this method
  
          Returns
          ----------
          geo : hypertools.DataGeometry
              A new data geometry object