Skip to content

evamaxfield/evaplot

Repository files navigation

evaplot

An up-to-date and slimmed down library for opinionated plotting styles with seaborn and matplotlib.

Installation

pip install evaplot

Quick Start

import evaplot
import seaborn as sns
import matplotlib.pyplot as plt

# Apply a style (downloads fonts on first use)
evaplot.set_style("evaplot_rc")

# Use seaborn/matplotlib as usual
fig, ax = plt.subplots()
sns.barplot(data=my_data, x="category", y="value", ax=ax)
plt.show()

Styles

evaplot ships six styles, each using a different Google Font (downloaded automatically on first import):

Style Font
evaplot_rc Roboto Condensed
evaplot_fsc Fira Sans Condensed
evaplot_j Jost
evaplot_m Montserrat
evaplot_sg Space Grotesk
evaplot_tw Titillium Web

Gallery

evaplot_rc — Roboto Condensed

evaplot_rc style example

Other styles

evaplot_fsc — Fira Sans Condensed

evaplot_fsc style example

evaplot_j — Jost

evaplot_j style example

evaplot_m — Montserrat

evaplot_m style example

evaplot_sg — Space Grotesk

evaplot_sg style example

evaplot_tw — Titillium Web

evaplot_tw style example

Helper Functions

set_cat_palette

Sets the categorical color palette based on the number of categories. Uses dark2 for n ≤ 8 and vivid for larger sets. Returns the full palette as a list of hex strings you can reuse directly for annotations, custom patches, or other matplotlib elements.

colors = evaplot.set_cat_palette(n=5)
# colors → ["#1b9e77", "#d95f02", ...]

# Annotate each bar with its hex color
for i, bar in enumerate(ax.patches):
    ax.text(
        bar.get_x() + bar.get_width() / 2,
        bar.get_height(),
        colors[i],
        ha="center", va="bottom",
        color=colors[i], fontsize=8,
    )

set_cat_palette demo


rotate_xticklabels

Rotates x-axis tick labels to prevent overlap on busy categorical axes. Works on individual Axes objects and on every panel of a FacetGrid by iterating g.axes.flat.

# single axes
evaplot.rotate_xticklabels(ax, rotation=45)

# every panel in a FacetGrid
for ax in g.axes.flat:
    evaplot.rotate_xticklabels(ax, rotation=45)

rotate_xticklabels demo


move_legend

Moves a seaborn legend with sensible bottom-centered defaults.

evaplot.move_legend(ax_or_facetgrid, bbox_to_anchor=(0.5, -0.15), loc="upper center", ncol=3)

move_legend demo


adjust_layout

Adjusts subplot spacing and applies tight_layout in one call. Pass g.fig for a seaborn FacetGrid, or omit fig to operate on the current figure.

evaplot.adjust_layout(fig=fig, hspace=0.35, wspace=0.3)

adjust_layout demo


set_facet_col_titles

Simplifies FacetGrid column titles using a template string. By default strips the verbose "col = value" prefix.

evaplot.set_facet_col_titles(g, "{col_name}")
Before After
set_facet_col_titles before set_facet_col_titles after

API Reference

Function Description
set_style(style, n) Apply an evaplot style and categorical palette
set_cat_palette(n) Set categorical palette (dark2 for n ≤ 8, vivid otherwise); returns hex color list
rotate_xticklabels(ax, rotation, ha) Rotate x-axis tick labels
move_legend(obj, bbox_to_anchor, loc, ncol, ...) Move a seaborn legend with opinionated defaults
adjust_layout(fig, hspace, wspace, bottom, rect) Adjust subplot spacing and apply tight_layout
set_facet_col_titles(g, template) Set FacetGrid column title template
show_installed_fonts() List font families in evaplot's font cache
update_matplotlib_fonts() Register all cached fonts with matplotlib
download_googlefont(font, add_to_cache) Download a Google Font to the cache

Credits

evaplot builds on opinionated by Maximilian Noichl.

Noichl, M. (2023). Opinionated: Simple, Clean Stylesheets for Plotting with Matplotlib and Seaborn (Version 0.0.2.8) [Computer software]. https://doi.org/10.5281/zenodo.8329780

License

MPLv2 License

About

An up-to-date and slimmed down library for opinionated plotting styles with seaborn and matplotlib.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors