Source code for plotnine.themes.theme_matplotlib

from ..options import get_option
from .elements import element_rect, element_text
from .theme import theme


[docs]class theme_matplotlib(theme): """ The default matplotlib look and feel. The theme can be used (and has the same parameter to customize) like a :class:`matplotlib.rc_context` manager. Parameters ---------- rc : dict, optional rcParams which should be applied on top of mathplotlib default. fname : str, optional Filename to a matplotlibrc file use_defaults : bool If `True` (the default) resets the plot setting to the (current) `matplotlib.rcParams` values """ def __init__(self, rc=None, fname=None, use_defaults=True): import matplotlib as mpl m = get_option("base_margin") base_size = mpl.rcParams.get("font.size", 11) super().__init__( text=element_text( size=base_size, linespacing=1, rotation=0, ), aspect_ratio=get_option("aspect_ratio"), dpi=get_option("dpi"), figure_size=get_option("figure_size"), axis_text=element_text(margin={"t": 2.4, "r": 2.4, "units": "pt"}), axis_title_x=element_text( va="bottom", ha="center", margin={"t": m, "units": "fig"} ), axis_title_y=element_text( angle=90, va="center", ha="left", margin={"r": m, "units": "fig"}, ), legend_box="auto", legend_box_just="auto", legend_box_margin=0, legend_box_spacing=m * 3, legend_direction="auto", legend_entry_spacing_x=5, legend_entry_spacing_y=2, legend_key=element_rect(fill="None", colour="None"), legend_key_size=16, legend_margin=0, legend_position="right", legend_spacing=10, legend_text=element_text( margin={"t": 3, "b": 3, "l": 3, "r": 3, "units": "pt"} ), legend_title=element_text( ha="left", margin={ "t": m, "b": m, "l": m, "r": m, "units": "fig", }, ), legend_title_align="auto", panel_spacing=m, plot_caption=element_text( ha="right", va="bottom", ma="right", margin={"t": m, "units": "fig"}, ), plot_margin=m, plot_subtitle=element_text( size=base_size * 0.9, ha="left", va="top", ma="left", margin={"b": m, "units": "fig"}, ), plot_title=element_text( ha="left", va="top", ma="left", margin={"b": m, "units": "fig"}, ), strip_align=0, strip_background=element_rect( fill="#D9D9D9", color="black", size=0.72 ), strip_text=element_text( margin={ "t": 1 / 3, "b": 1 / 3, "l": 1 / 3, "r": 1 / 3, "units": "lines", }, ), strip_text_y=element_text(rotation=-90), complete=True, ) if use_defaults: _copy = mpl.rcParams.copy() if "tk.pythoninspect" in _copy: del _copy["tk.pythoninspect"] self._rcParams.update(_copy) if fname: self._rcParams.update(mpl.rc_params_from_file(fname)) if rc: self._rcParams.update(rc)