plotting_utils
Elegant wrappers around matplotlib and seaborn, for scientific plotting that stays consistent across figures.
Installation
pip install ac-plotting-ut
Note on the package name. This project was previously published on PyPI as
plotting_utils. From v0.2.0 it is distributed asac-plotting-ut. The import name is unchanged —import plotting_utils as plukeeps working. The oldplotting_utilsdistribution is no longer maintained.
Quick Start
import matplotlib.pyplot as plt
import pandas as pd
import plotting_utils as plu
# Journal-style rcParams
plu.set_rcParams()
df = pd.DataFrame({
'x': [1, 2, 3, 4],
'y': [2, 4, 5, 8],
'group': ['a', 'a', 'b', 'b'],
})
fig, ax = plt.subplots(figsize=(6, 4))
plu.scatter(df, 'x', 'y', by='group', ax=ax)
plu.format_ax(ax, xlabel='X values', ylabel='Y values', reduced_spines=True)
plu.save_best_pdf_quality(fig, figsize=(6, 4), path='.', name='my_plot.pdf')
Every plotting function takes a pd.DataFrame plus column names, draws onto an
ax you provide, and returns that ax — so they compose freely with plain
matplotlib.
API
🎨 Colors
| Function | Purpose |
|---|---|
create_palette() |
Build a {category: color} mapping from a DataFrame column |
ten_godisnot, darjeeling, fantastic_fox |
Ready-made qualitative palettes |
📊 Plots
| Function | Purpose |
|---|---|
scatter() |
Scatter, coloured/sized by categorical or continuous columns |
dist() |
Kernel density distributions, optionally split by group |
counts_plot() |
Category frequencies |
bar(), box(), strip(), violin() |
Categorical comparisons, optionally grouped by by |
bb_plot() |
Stacked composition (crosstab) plot |
plot_heatmap() |
Heatmap with optional row/column clustering |
dotplot() |
Dotplot with size and colour encodings |
volcano() |
Volcano plot with automatic label placement |
stem_plot(), rank_plot() |
Ranked-value displays |
🛠 Axis decoration and utilities
| Function | Purpose |
|---|---|
set_rcParams() |
Apply journal-style matplotlib defaults |
format_ax() |
Labels, ticks, rotation, log scale, reduced spines |
add_legend(), add_cbar() |
Legends and colorbars from a palette or array |
add_wilcox() |
Statistical annotations via statannotations |
order_from_index() |
Ordering helper for matrix plots |
save_best_pdf_quality() |
High-DPI PDF export |
Timer, run_command, make_folder, update_params |
Small helpers |
Requirements
Python 3.10+. Dependencies (numpy, pandas, scipy, matplotlib, seaborn,
scikit-learn, joblib, pillow, statannotations, textalloc) are installed
automatically.
Tested on Linux and macOS against Python 3.10, 3.11 and 3.12.
Development
git clone https://github.com/andrecossa5/plotting_utils.git
cd plotting_utils
pip install -e ".[test]"
pytest
Release History
0.2.1
- Fixed
bar()silently ignoringcategorical_cmap: an unreachable branch meant an explicit palette was never applied and bars rendered in seaborn's default colour bar()no longer needs an explicitcategorical_cmap=Nonewhenbyis unset- Replaced seaborn's deprecated
palette-without-hueusage, removed in seaborn 0.14 - Added tests asserting rendered colours, not just that a call succeeds
0.2.0
- Renamed the PyPI distribution to
ac-plotting-ut; import name unchanged - Modern
pyproject.tomlpackaging (hatchling);setup.pyremoved - Declared previously-missing dependencies:
numpy,pandas,scipy,pillow - Requires Python 3.10+; verified against numpy 2.5, pandas 3.0, matplotlib 3.11, seaborn 0.13
- Added a test suite (85 tests) and CI across Linux/macOS on Python 3.10–3.12
- Automated PyPI releases via Trusted Publishing
- Fixed
volcano()raisingValueErrorwhen called with its own defaultylim - Fixed
volcano()andrank_plot()label placement failing on non-integer indices - Fixed
rank_plot()passing an invalid positional argument toax.scatter - Fixed
dotplotandrank_plotbeing absent from__all__ violin()no longer needs an explicitcategorical_cmap=Nonewhenbyis unset
0.1.5
- Last release under the
plotting_utilsdistribution name
0.1.4 (2025-09-11)
- Enhanced README with comprehensive documentation
- Added proper package metadata (long_description, author, classifiers)
- Improved PyPI package presentation
0.1.3
- Previous stable release
License
MIT — see LICENSE.
Metadata
Release files for ac-plotting-ut 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ac_plotting_ut-0.2.1.tar.gz | 18.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ac_plotting_ut-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 33.8 kB
Release files / ac_plotting_ut-0.2.1.tar.gz
| Download URL | ac_plotting_ut-0.2.1.tar.gz |
|---|---|
| Size | 18.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ed1da3a9044d58b634f71d4112d8d12c0a6dedc51d6eaebab9f3dc9bb252abae
|
|
BLAKE2b-256 checksum How to use checksums |
ef6985672d15f4442f16b5b3d42fcd5c162c76e65c469c57812d99b2c7d7b6eb
|
| 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 Aug 5, 2026.
Transparency logRelease files / ac_plotting_ut-0.2.1-py3-none-any.whl
| Download URL | ac_plotting_ut-0.2.1-py3-none-any.whl |
|---|---|
| Size | 15.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
24a293e099374987171a31ffa3d7c610f741148c9722dc6926c8a7343f8dfed1
|
|
BLAKE2b-256 checksum How to use checksums |
44fc820b08a8015be1028aeec93ae5249a4e394987c4fdad85a7c98663992c88
|
| 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 Aug 5, 2026.
Transparency log