def plot_mmm(self, data, lower=None, upper=None, **kwargs):
alpha = kwargs.pop('<STR_LIT>', <NUM_LIT>)<EOL>line, = self.plot(data, **kwargs)<EOL>out = [line]<EOL>kwargs.update({<EOL>'<STR_LIT:label>': '<STR_LIT>',<EOL>'<STR_LIT>': line.get_linewidth() / <NUM_LIT:2>,<EOL>'<STR_LIT>': line.get_color(),<EOL>'<STR_LIT>': alpha * <NUM_LIT:2>,<EOL>})<EOL>fill = [data.xindex.value, data.value, data.value]<EOL>for i, bound in enumerate((lower, upper)):<EOL><INDENT>if bound is not None:<EOL><INDENT>out.extend(self.plot(bound, **kwargs))<EOL>fill[i+<NUM_LIT:1>] = bound.value<EOL><DEDENT><DEDENT>out.append(self.fill_between(<EOL>*fill, alpha=alpha, color=kwargs['<STR_LIT>'],<EOL>rasterized=kwargs.get('<STR_LIT>', True)))<EOL>return out<EOL>
Plot a `Series` as a line, with a shaded region around it.

        The ``data`` `Series` is drawn, while the ``lower`` and ``upper``
        `Series` are plotted lightly below and above, with a fill
        between them and the ``data``.

        All three `Series` should have the same `~Series.index` array.

        Parameters
        ----------
        data : `~gwpy.types.Series`
            Data to plot normally.

        lower : `~gwpy.types.Series`
            Lower boundary (on Y-axis) for shade.

        upper : `~gwpy.types.Series`
            Upper boundary (on Y-axis) for shade.

        **kwargs
            Any other keyword arguments acceptable for
            :meth:`~matplotlib.Axes.plot`.

        Returns
        -------
        artists : `tuple`
            All of the drawn artists:

            - `~matplotlib.lines.Line2d` for ``data``,
            - `~matplotlib.lines.Line2D` for ``lower``, if given
            - `~matplotlib.lines.Line2D` for ``upper``, if given
            - `~matplitlib.collections.PolyCollection` for shading

        See Also
        --------
        matplotlib.axes.Axes.plot
            for a full description of acceptable ``*args`` and ``**kwargs``