def scatter(self, projection=None, c=None, cmap='<STR_LIT>', linewidth=<NUM_LIT:0.0>,<EOL>edgecolor='<STR_LIT:k>', axes=None, colorbar=True, s=<NUM_LIT:10>, **kwargs):
if (not PLOTTING):<EOL><INDENT>print("<STR_LIT>")<EOL><DEDENT>else:<EOL><INDENT>if(isinstance(projection, str)):<EOL><INDENT>try:<EOL><INDENT>dt = self.adata.obsm[projection]<EOL><DEDENT>except KeyError:<EOL><INDENT>print('<STR_LIT>'<EOL>'<STR_LIT>')<EOL><DEDENT><DEDENT>elif(projection is None):<EOL><INDENT>try:<EOL><INDENT>dt = self.adata.obsm['<STR_LIT>']<EOL><DEDENT>except KeyError:<EOL><INDENT>try:<EOL><INDENT>dt = self.adata.obsm['<STR_LIT>']<EOL><DEDENT>except KeyError:<EOL><INDENT>print("<STR_LIT>"<EOL>"<STR_LIT>")<EOL>return<EOL><DEDENT><DEDENT><DEDENT>else:<EOL><INDENT>dt = projection<EOL><DEDENT>if(axes is None):<EOL><INDENT>plt.figure()<EOL>axes = plt.gca()<EOL><DEDENT>if(c is None):<EOL><INDENT>plt.scatter(dt[:, <NUM_LIT:0>], dt[:, <NUM_LIT:1>], s=s,<EOL>linewidth=linewidth, edgecolor=edgecolor, **kwargs)<EOL><DEDENT>else:<EOL><INDENT>if isinstance(c, str):<EOL><INDENT>try:<EOL><INDENT>c = self.adata.obs[c].get_values()<EOL><DEDENT>except KeyError:<EOL><INDENT><NUM_LIT:0>  <EOL><DEDENT><DEDENT>if((isinstance(c[<NUM_LIT:0>], str) or isinstance(c[<NUM_LIT:0>], np.str_)) and<EOL>(isinstance(c, np.ndarray) or isinstance(c, list))):<EOL><INDENT>i = ut.convert_annotations(c)<EOL>ui, ai = np.unique(i, return_index=True)<EOL>cax = axes.scatter(dt[:,<NUM_LIT:0>], dt[:,<NUM_LIT:1>], c=i, cmap=cmap, s=s,<EOL>linewidth=linewidth,<EOL>edgecolor=edgecolor,<EOL>**kwargs)<EOL>if(colorbar):<EOL><INDENT>cbar = plt.colorbar(cax, ax=axes, ticks=ui)<EOL>cbar.ax.set_yticklabels(c[ai])<EOL><DEDENT><DEDENT>else:<EOL><INDENT>if not (isinstance(c, np.ndarray) or isinstance(c, list)):<EOL><INDENT>colorbar = False<EOL><DEDENT>i = c<EOL>cax = axes.scatter(dt[:,<NUM_LIT:0>], dt[:,<NUM_LIT:1>], c=i, cmap=cmap, s=s,<EOL>linewidth=linewidth,<EOL>edgecolor=edgecolor,<EOL>**kwargs)<EOL>if(colorbar):<EOL><INDENT>plt.colorbar(cax, ax=axes)<EOL><DEDENT><DEDENT><DEDENT><DEDENT>
Display a scatter plot.

        Displays a scatter plot using the SAM projection or another input
        projection with or without annotations.

        Parameters
        ----------

        projection - ndarray of floats, optional, default None
            An N x 2 matrix, where N is the number of data points. If None,
            use an existing SAM projection (default t-SNE). Can take on values
            'umap' or 'tsne' to specify either the SAM UMAP embedding or
            SAM t-SNE embedding.

        c - ndarray or str, optional, default None
            Colors for each cell in the scatter plot. Can be a vector of
            floats or strings for cell annotations. Can also be a key
            for sam.adata.obs (i.e. 'louvain_clusters').

        axes - matplotlib axis, optional, default None
            Plot output to the specified, existing axes. If None, create new
            figure window.

        cmap - string, optional, default 'rainbow'
            The colormap to use for the input color values.

        colorbar - bool, optional default True
            If True, display a colorbar indicating which values / annotations
            correspond to which color in the scatter plot.

        Keyword arguments -
            All other keyword arguments that can be passed into
            matplotlib.pyplot.scatter can be used.