Return a parameter dict for the aesthetic style of the plots.

    NOTE: This is an internal method from Seaborn that is simply used to
    create a default aesthetic in yellowbrick. If you'd like to use these
    styles then import Seaborn!

    This affects things like the color of the axes, whether a grid is
    enabled by default, and other aesthetic elements.

    This function returns an object that can be used in a ``with`` statement
    to temporarily change the style parameters.

    Parameters
    ----------
    style : dict, reset, or None
        A dictionary of parameters or the name of a preconfigured set.

    rc : dict, optional
        Parameter mappings to override the values in the preset seaborn
        style dictionaries. This only updates parameters that are
        considered part of the style definition.

def _axes_style(style=None, rc=None):
    """
    Return a parameter dict for the aesthetic style of the plots.

    NOTE: This is an internal method from Seaborn that is simply used to
    create a default aesthetic in yellowbrick. If you'd like to use these
    styles then import Seaborn!

    This affects things like the color of the axes, whether a grid is
    enabled by default, and other aesthetic elements.

    This function returns an object that can be used in a ``with`` statement
    to temporarily change the style parameters.

    Parameters
    ----------
    style : dict, reset, or None
        A dictionary of parameters or the name of a preconfigured set.

    rc : dict, optional
        Parameter mappings to override the values in the preset seaborn
        style dictionaries. This only updates parameters that are
        considered part of the style definition.

    """
    if isinstance(style, dict):
        style_dict = style

    else:
        # Define colors here
        dark_gray = ".15"
        light_gray = ".8"

        # Common parameters
        style_dict = {
            "figure.facecolor": "white",
            "text.color": dark_gray,
            "axes.labelcolor": dark_gray,
            "legend.frameon": False,
            "legend.numpoints": 1,
            "legend.scatterpoints": 1,
            "xtick.direction": "out",
            "ytick.direction": "out",
            "xtick.color": dark_gray,
            "ytick.color": dark_gray,
            "axes.axisbelow": True,
            "image.cmap": "Greys",
            "font.family": ["sans-serif"],
            "font.sans-serif": ["Arial", "Liberation Sans",
                                "Bitstream Vera Sans", "sans-serif"],
            "grid.linestyle": "-",
            "axes.grid": True,
            "lines.solid_capstyle": "round",
            "axes.facecolor": "white",
            "axes.edgecolor": light_gray,
            "axes.linewidth": 1.25,
            "grid.color": light_gray,
            "xtick.major.size": 0,
            "ytick.major.size": 0,
            "xtick.minor.size": 0,
            "ytick.minor.size": 0,
        }

    # Override these settings with the provided rc dictionary
    if rc is not None:
        rc = {k: v for k, v in rc.items() if k in _style_keys}
        style_dict.update(rc)

    # Wrap in an _AxesStyle object so this can be used in a with statement
    style_object = _AxesStyle(style_dict)

    return style_object