Skip to content

shplot

shplot is a Python library wrapper for managing Matplotlib configuration through profiles, and provides a number of built-in profiles suitable for different use cases.

Installation

shplot is available on PyPI, and can be installed with pip:

pip install shplot

Usage

Common use cases are shown here. Refer to the documentation for in-depth usage. The project repository’s demos/ folder contains illustrations of the built-in profiles. The demo files can be (re)generated by running scripts/plot_demos.py.

Create a plot and use it in a context

>>> from shplot import ShPlot
>>> plot = ShPlot(builtin_profile_name="paper")
>>> with plot.context(nrows=2, ncols=2) as (fig, axs):
...     # `axs` is a 2x2 array.
...     pass
>>> with plot.context(mosaic="AAB\nC.B") as (fig, axs):
...     # `axs` is a dictionary.
...     pass

Update Matplotlib settings using a profile

>>> from shplot.profiles import ColorProfile
>>> profile = ColorProfile(fg="yellow", bg="black")
>>> profile.config()  # will update `matplotlib.rcParams`

Use a built-in profile with overrides

>>> from shplot import ShPlot
>>> from shplot.profiles.builtin import ShPaperProfile
>>> profile = ShPaperProfile(fontname="fira", **{"axes.grid": True})
>>> profile.config()

Create a plot using command line arguments

main.py

from shplot import ShPlot

plot = ShPlot.parse_from_cmdline()
with plot.context() as (fig, ax):
    ...
$ python main.py -h
usage: main.py [-h] [--file str] [--shprofile str] [--profile-args key=val,...] [--width
  float] [--aspect float[;float]]

options:
  -h/--help                   show this help message and exit
  --file str                  Plot save file (extension will be added if not provided).
                              (optional)
  --shprofile str             Name of a built-in profile.
                              ({paper/book/web_light/web_dark/presentation} optional)
  --profile-args key=val,...  Arguments for the builtin-profile. Refer to the individual
                              profiles for details. (optional)
  --width float               Plot width, in inches (if greater than 1), or as a fraction of
                              the configured plot width (if less than or equal to 1).
                              (optional)
  --aspect float[;float]      Plot aspect ratio, width/height. When provided as a command
                              line argument, can be passed as a single number or a ratio in
                              the form `<WIDTH>;<HEIGHT>`. (optional)