code: def plot_2d(self, X, labels=None, s=20, marker='o',
                  dimensions=(0, 1), ax=None, colors=None,
                  fignum=None, cmap=None, # @UndefinedVariable
                  ** kwargs):
          
          if cmap is None:
              cmap = matplotlib.cm.jet
          if ax is None:
              fig = pylab.figure(fignum)
              ax = fig.add_subplot(111)
          if labels is None:
              labels = numpy.zeros(X.shape[0])
          ulabels = []
          for lab in labels:
              if not lab in ulabels:
                  ulabels.append(lab)
          nlabels = len(ulabels)
          if colors is None:
              colors = iter([cmap(float(i) / nlabels) for i in range(nlabels)])
          else:
              colors = iter(colors)
          X_ = self.project(X, self.Q)[:,dimensions]
          kwargs.update(dict(s=s))
          plots = list()
          for i, l in enumerate(ulabels):
              kwargs.update(dict(color=next(colors), marker=marker[i % len(marker)]))
              plots.append(ax.scatter(*X_[labels == l, :].T, label=str(l), **kwargs))
          ax.set_xlabel(r"PC$_1$")
          ax.set_ylabel(r"PC$_2$")
          try:
              pylab.tight_layout()
          except:
              pass
          return plots
docs: Plot dimensions `dimensions` with given labels against each other in
          PC space. Labels can be any sequence of labels of dimensions X.shape[0].
          Labels can be drawn with a subsequent call to legend()