@_log<EOL><INDENT>def crossplot(self, analytes=None, lognorm=True,<EOL>bins=<NUM_LIT>, filt=False, samples=None,<EOL>subset=None, figsize=(<NUM_LIT:12>, <NUM_LIT:12>), save=False,<EOL>colourful=True, mode='<STR_LIT>', **kwargs):<DEDENT>
if analytes is None:<EOL><INDENT>analytes = self.analytes<EOL><DEDENT>if self.focus_stage in ['<STR_LIT>', '<STR_LIT>']:<EOL><INDENT>analytes = [a for a in analytes if self.internal_standard not in a]<EOL><DEDENT>try:<EOL><INDENT>analytes = sorted(analytes, key=lambda x: float(re.findall('<STR_LIT>', x)[<NUM_LIT:0>]))<EOL><DEDENT>except IndexError:<EOL><INDENT>analytes = sorted(analytes)<EOL><DEDENT>self.get_focus(filt=filt, samples=samples, subset=subset)<EOL>fig, axes = plot.crossplot(dat=self.focus, keys=analytes, lognorm=lognorm,<EOL>bins=bins, figsize=figsize, colourful=colourful,<EOL>focus_stage=self.focus_stage, cmap=self.cmaps,<EOL>denominator=self.internal_standard, mode=mode)<EOL>if save or isinstance(save, str):<EOL><INDENT>if isinstance(save, str):<EOL><INDENT>fig.savefig(self.report_dir + '<STR_LIT:/>' + save, dpi=<NUM_LIT:200>)            <EOL><DEDENT>else:<EOL><INDENT>fig.savefig(self.report_dir + '<STR_LIT>', dpi=<NUM_LIT:200>)<EOL><DEDENT><DEDENT>return fig, axes<EOL>
Plot analytes against each other.

Parameters
----------
analytes : optional, array_like or str
    The analyte(s) to plot. Defaults to all analytes.
lognorm : bool
    Whether or not to log normalise the colour scale
    of the 2D histogram.
bins : int
    The number of bins in the 2D histogram.
filt : str, dict or bool
    Either logical filter expression contained in a str,
    a dict of expressions specifying the filter string to
    use for each analyte or a boolean. Passed to `grab_filt`.
figsize : tuple
    Figure size (width, height) in inches.
save : bool or str
    If True, plot is saves as 'crossplot.png', if str plot is
    saves as str.
colourful : bool
    Whether or not the plot should be colourful :).
mode : str
    'hist2d' (default) or 'scatter'

Returns
-------
(fig, axes)