Skip to main content

PubliPlots

Publication-ready plots

Overview

PubliPlots is a Python visualization library that provides beautiful, publication-ready plots with a seaborn-like API. It focuses on:

  • Beautiful defaults: Carefully designed pastel color palettes and styles
  • Intuitive API: Follows seaborn conventions for ease of use
  • Modular design: Compose complex visualizations from simple building blocks
  • Highly configurable: Extensive customization while maintaining sensible defaults
  • Publication-ready: Optimized for scientific publications and presentations

Claude Code Claude Code plugin

/plugin marketplace add jorgebotas/publiplots
/plugin install publiplots@publiplots

The plugin ships two skills that auto-activate when Claude detects publiplots work:

  • /publiplots:publiplots-guide — library conventions, full pp.* API surface, canonical idioms, common gotchas.
  • /publiplots:legend-placement — decision tree for pp.legend scoping (per-axes, row/column bands, figure-level bands) plus the pp.legend(ax) vs pp.legend(anchor=ax) asymmetry.

Example usage

Once installed, asking Claude natural-language questions produces idiomatic publiplots code:

"Make a 2×3 scatter grid with a shared legend above the top row."

Claude will auto-invoke legend-placement and produce something like:

import publiplots as pp

fig, axes = pp.subplots(2, 3, axes_size=(35, 25))
for ax in axes.flat:
    pp.scatterplot(data=df, x='x', y='y', hue='group', ax=ax)
pp.legend(axes[0], side='top')   # row-0 shared band
pp.savefig('figure.pdf')

You can also invoke skills explicitly with /publiplots:publiplots-guide or /publiplots:legend-placement at any time. Plugin versions track library releases; pin a specific release with @v0.10.1.

Barplot with Hatch and Hue Raincloud Plot

4-Way Venn Diagram UpSet Plot

For interactive examples, check out the examples.ipynb notebook.

Installation

From PyPI

pip install publiplots

Or if you are using uv for Python environment management:

uv pip install publiplots

From source (development)

git clone https://github.com/jorgebotas/publiplots.git
cd publiplots
pip install -e .

Development with uv and Jupyter

If you're using uv for Python environment management and want to use the package in Jupyter notebooks:

# Clone the repository
git clone https://github.com/jorgebotas/publiplots.git
cd publiplots

# Create a new uv environment with Python 3.11 (or your preferred version)
uv venv --python 3.11

# Activate the environment
source .venv/bin/activate  # On Linux/macOS
# or
.venv\Scripts\activate  # On Windows

# Install the package in editable mode with all dependencies
uv pip install -e .

# Install ipykernel to make the environment available in Jupyter
uv pip install ipykernel

# Register the environment as a Jupyter kernel
python -m ipykernel install --user --name=publiplots --display-name="Python (publiplots)"

Now you can select the "Python (publiplots)" kernel in Jupyter Lab or Jupyter Notebook and import publiplots:

import publiplots as pp

Quick Start

import publiplots as pp
import pandas as pd

# The publication style is applied on import — there is nothing to call.
# Use pp.reset_style() if you ever need matplotlib's defaults back.

# Create a scatter plot
ax = pp.scatterplot(
    data=df,
    x='measurement_a',
    y='measurement_b',
    hue='condition',
    palette=pp.color_palette('pastel', n_colors=3)
)

# Save with publication-ready settings
pp.savefig('figure.pdf')

Matplotlib backends

publiplots is backend-agnostic — every plot works under any matplotlib backend (PNG/JPG via Agg, PDF, SVG, PS, interactive Jupyter inline / widget, desktop GUIs). The library never calls matplotlib.use(...) implicitly, so it won't override a backend you've already picked.

For headless rendering (scripts, CI, notebooks without displays) the common pattern is to set Agg in your own code before importing pyplot:

import matplotlib
matplotlib.use("Agg")        # must come before pyplot touches the GUI
import matplotlib.pyplot as plt
import publiplots as pp

Contributing

Contributions are welcome! Please feel free to submit issues or pull requests.

Citation

If you use PubliPlots in your research, please cite:

Botas, J. (2025). PubliPlots: Publication-ready plotting for Python.
GitHub: https://github.com/jorgebotas/publiplots

License

MIT License - see LICENSE file for details.

Author

Jorge Botas (@jorgebotas)

Acknowledgments

PubliPlots builds upon excellent work from the Python visualization community:

  • ggvenn by Yan Linlin - The Venn diagram implementation (2-5 sets) is based on the geometry from this R package
  • UpSetPlot by Joel Nothman - The UpSet plot implementation is inspired by concepts from this library (BSD-3-Clause license)
  • matplotlib - The foundational plotting library that powers PubliPlots
  • seaborn - Inspiration for API design and color palettes

Release files for publiplots 0.18.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for publiplots 0.18.3
File Size Uploaded
publiplots-0.18.3.tar.gz 1.3 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for publiplots 0.18.3
File Interpreter ABI Platform
publiplots-0.18.3-py3-none-any.whl Python 3 none any Details

Total release size: 2.5 MB

Release files / publiplots-0.18.3.tar.gz

Download URL publiplots-0.18.3.tar.gz
Size 1.3 MB
Tags Source
SHA-256 checksum
How to use checksums
6199e4a41f585e9cfd54dfaba5cab1996463e4a942dd49229f7e3cc1d42aeaa8
BLAKE2b-256 checksum
How to use checksums
d8cb236a8123e6123f64a9748ce93c4df1ecf08ac600bb6b422cdb9ef32ffc14
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release files / publiplots-0.18.3-py3-none-any.whl

Download URL publiplots-0.18.3-py3-none-any.whl
Size 1.3 MB
Tags Python 3
SHA-256 checksum
How to use checksums
9cbb228c8ce9f80546795e9b401ea90c717b683dbd2c8ea3c1ad4ddba42881c7
BLAKE2b-256 checksum
How to use checksums
3758ef94160c49d359f177dbcb2ab5cc74ee9d275f250a364596a93a18337c64
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release history Release notifications | RSS feed

0.19.0

2 release files

This release

0.18.3 This release

2 release files

0.16.0

2 release files

0.15.3

2 release files

0.15.2

2 release files

0.15.1

2 release files

0.15.0

2 release files

0.14.1

2 release files

0.14.0

2 release files

0.13.0

2 release files

0.12.1

2 release files

0.12.0

2 release files

0.11.3

2 release files

0.11.2

2 release files

0.11.1

2 release files

0.11.0

2 release files

0.10.9

2 release files

0.10.8

2 release files

0.9.3

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.4

2 release files

0.8.3

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.7

2 release files

0.4.6

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page