r'''Plot lines of constant mixing ratio.

        Adds lines of constant mixing ratio (isohumes) to the
        plot. The default style of these lines is dashed green lines with an
        alpha value of 0.8. These can be overridden using keyword arguments.

        Parameters
        ----------
        rv : array_like, optional
            1-dimensional array of unitless mixing ratio values to plot. If
            none are given, default values are used.
        p : array_like, optional
            1-dimensional array of pressure values to be included in the
            isohumes. If not specified, they will be linearly distributed
            across the current plotted pressure range.
        kwargs
            Other keyword arguments to pass to
            `matplotlib.collections.LineCollection`

        See Also
        --------
        `matplotlib.collections.LineCollection`

def plot_mixing_lines(self, p=None, rv=None, **kwargs):
        r'''Plot lines of constant mixing ratio.

        Adds lines of constant mixing ratio (isohumes) to the
        plot. The default style of these lines is dashed green lines with an
        alpha value of 0.8. These can be overridden using keyword arguments.

        Parameters
        ----------
        rv : array_like, optional
            1-dimensional array of unitless mixing ratio values to plot. If
            none are given, default values are used.
        p : array_like, optional
            1-dimensional array of pressure values to be included in the
            isohumes. If not specified, they will be linearly distributed
            across the current plotted pressure range.
        kwargs
            Other keyword arguments to pass to
            `matplotlib.collections.LineCollection`

        See Also
        --------
        `matplotlib.collections.LineCollection`
        '''
        for artist in self._mixing_lines:
            artist.remove()
        self._mixing_lines = []

        # Default mixing level values if necessary
        if rv is None:
            rv = np.array([
                0.1e-3, 0.2e-3, 0.5e-3, 1e-3, 1.5e-3, 2e-3, 3e-3, 4e-3, 6e-3,
                8e-3, 10e-3, 12e-3, 15e-3, 20e-3, 30e-3, 40e-3,
                50e-3]).reshape(-1, 1)
        else:
            rv = np.asarray(rv).reshape(-1, 1)

        # Set pressure range if necessary
        if p is None:
            p = np.linspace(min(self.get_ylim()), max(self.get_ylim()))
        else:
            p = np.asarray(p)

        # Assemble data for plotting
        Td = calculate(
            'Td', p=p, rv=rv, p_units='hPa', rv_units='kg/kg',
            Td_units='degC')
        Td_label = calculate('Td', p=550, p_units='hPa', rv=rv,
                             Td_units='degC')
        linedata = [np.vstack((t, p)).T for t in Td]

        # Add to plot
        kwargs.setdefault('clip_on', True)
        kwargs.setdefault('colors', '#166916')
        kwargs.setdefault('linestyles', '--')
        kwargs.setdefault('alpha', 1)
        kwargs.setdefault('linewidth', 0.5)
        kwargs.setdefault('zorder', 1.1)
        collection = LineCollection(linedata, **kwargs)
        self._mixing_lines.append(collection)
        self.add_collection(collection)
        rv = rv.flatten() * 1000
        for i in range(len(rv)):
            if rv[i] < 1:
                format_string = '{:.1f}'
            else:
                format_string = '{:.0f}'
            t = self.text(Td_label[i], 550, format_string.format(rv[i]),
                          fontsize=8, ha='right', va='center', rotation=60,
                          color='#166916', bbox={
                              'facecolor': 'w', 'edgecolor': 'w', 'alpha': 0,
                              }, zorder=1.2)
            t.set_clip_on(True)
            self._mixing_lines.append(t)