Source code for dms_variants.plotnine_themes
"""
===============
plotnine_themes
===============
Defines `plotnine <https://plotnine.readthedocs.io>`_ themes.
See here for details on how to use the themes for plotting:
https://plotnine.readthedocs.io/en/stable/generated/plotnine.themes.theme.html
"""
import plotnine as p9
[docs]
class theme_graygrid(p9.themes.theme_matplotlib):
"""Plot theme with a light gray grid and axes.
Example
-------
.. plot::
You can set this theme using the `plotnine.theme_set` command:
>>> import pandas as pd
>>> from plotnine import *
>>> from dms_variants.plotnine_themes import theme_graygrid
>>> df = pd.DataFrame({'x': [1, 2, 3, 4], 'y': [1, 4, 9, 16]})
>>> theme_set(theme_graygrid())
>>> p = (ggplot(df, aes('x', 'y')) +
... geom_point(size=3, color='orange') +
... theme(figure_size=(2, 2))
... )
>>> _ = p.draw(show=True)
Get rid of the vertical grid lines:
>>> p_novertgrid = p + theme(panel_grid_major_x=element_blank())
>>> _ = p_novertgrid.draw(show=True)
Get rid of the axes border:
>>> p_noborder = p + theme(panel_border=element_blank())
>>> _ = p_noborder.draw(show=True)
"""
def __init__(self, *args, **kwargs):
"""See main class docstring."""
p9.theme_matplotlib.__init__(self, *args, **kwargs)
gray = "#D9D9D9" # gray used in themes.theme_matplotlib
self.add_theme(
p9.theme(
panel_border=p9.element_rect(color=gray, size=0.7),
axis_line=p9.element_blank(),
axis_ticks_length=0,
axis_ticks=p9.element_blank(),
panel_grid_major=p9.element_line(color=gray, size=0.7),
panel_grid_minor=p9.element_blank(),
panel_ontop=True, # plot panel on top of grid
),
)
if __name__ == "__main__":
import doctest
doctest.testmod()