Skip to main content

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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

evaplot-0.1.1.tar.gz (3.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

evaplot-0.1.1-py3-none-any.whl (447.2 kB view details)

Uploaded Python 3

File details

Details for the file evaplot-0.1.1.tar.gz.

File metadata

  • Download URL: evaplot-0.1.1.tar.gz
  • Upload date:
  • Size: 3.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for evaplot-0.1.1.tar.gz
Algorithm Hash digest
SHA256 1c8c07e57e450dade197ebc0c24e2b488b6c7c4805d406c051d35afb5a44d33f
MD5 de683692ec441af8b5171a56104d61cb
BLAKE2b-256 75e907c52cfebba399093101b8d4a6780d40dc4fd9bd6bc8905dd6ffb24d304d

See more details on using hashes here.

Provenance

The following attestation bundles were made for evaplot-0.1.1.tar.gz:

Publisher: ci.yml on evamaxfield/evaplot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file evaplot-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: evaplot-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 447.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for evaplot-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d39ec26edef5496d9c5d3ff186e6788333ebad9ee64879b4221783e20c8c4d85
MD5 31bee437e3b7457d0e4888b01e660bf3
BLAKE2b-256 ee13231870fc765f649bfed9fc03babe01ff1343d9f773b484540a189cc6ec40

See more details on using hashes here.

Provenance

The following attestation bundles were made for evaplot-0.1.1-py3-none-any.whl:

Publisher: ci.yml on evamaxfield/evaplot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page