Publication-quality square-cell heatmap visualisation for matplotlib
Project description
cubeheatmap
Publication-quality square-cell heatmaps for matplotlib
cubeheatmap renders clean, equal-sized square-cell heatmaps designed for scientific publications, reports, and presentations. Works with numpy arrays, pandas DataFrames, and any 2-D numerical data.
Features
- Square cells - every cell is a perfect square, sized automatically
- Multiple input formats -
from_matrix(),from_dataframe() - Annotations - display values inside cells with auto-contrast text
- Significance markers - overlay stars or custom symbols with
sig_mask - Grid layouts -
draw_grid()for multi-panel figures - Fully customisable - 36+ style parameters: colors, fonts, rounded corners, dark themes
- Domain presets - citation networks, software dependencies, data pipelines, web graphs, social networks
Installation
pip install cubeheatmap
Quick Start
import numpy as np
import cubeheatmap as ch
data = np.random.uniform(-4, 4, (10, 3))
hm = ch.CubeHeatmap.from_matrix(
data,
row_labels=[f"Gene_{i}" for i in range(10)],
col_labels=["Day14", "Day21", "Day40"],
)
style = ch.Style(cmap="RdBu_r", vmin=-4, vmax=4, colorbar_label="log2FC")
ax = ch.draw(hm, title="My Heatmap", style=style)
ax.figure.savefig("heatmap.png", dpi=150, bbox_inches="tight")
For presets, customization and transforms see docs/usage.md.
Gallery
| Annotated | Significance markers | Dark theme |
| Grid layout | Rounded corners | Likert survey |
| Citation network | Model benchmark | Dense microarray |
Examples
16 runnable scripts covering all features and presets - see docs/examples.md for the full list with previews.
cd examples && python generate_all.py
Citation
If you use cubeheatmap in a publication, please cite it:
APA:
dam2452. (2026). cubeheatmap: Publication-quality square-cell heatmaps for Python (Version 0.1.0). https://github.com/dam2452/cubeheatmap
BibTeX:
@software{cubeheatmap2026,
title = {cubeheatmap: Publication-quality square-cell heatmaps for Python},
author = {dam2452},
year = {2026},
version = {0.1.0},
url = {https://github.com/dam2452/cubeheatmap}
}
Contributing
Contributions are welcome! Here's how you can help:
- Bug reports - Open an issue with a minimal reproducible example
- Feature requests - Open an issue describing the use case
- Code contributions - Fork, create a feature branch, and open a pull request
- New presets - Add a new submodule under
cubeheatmap/presets/with ato_heatmap()function and an example
Development setup
git clone https://github.com/dam2452/cubeheatmap.git
cd cubeheatmap
pip install -e ".[dev]"
pytest tests/
License
This project is licensed under CC BY-NC 4.0 - Creative Commons Attribution-NonCommercial 4.0 International.
- Use it freely - for research, education, personal projects
- Cite the author - attribution required in publications and derivative works
- No commercial use - you may not sell or monetize this software
See LICENSE for full details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cubeheatmap-0.1.0.tar.gz.
File metadata
- Download URL: cubeheatmap-0.1.0.tar.gz
- Upload date:
- Size: 18.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
15bef05774b49b5635aa262f15438323fed4f4eb24f013805ce276d8aa6133c8
|
|
| MD5 |
7981e91acbba6fa18ee781144f887526
|
|
| BLAKE2b-256 |
d87f063be0cd8b3af81fcc11d2b9d7b4b7b012e0baa444d04e966591022a6156
|
File details
Details for the file cubeheatmap-0.1.0-py3-none-any.whl.
File metadata
- Download URL: cubeheatmap-0.1.0-py3-none-any.whl
- Upload date:
- Size: 17.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0738915381bed6127fa13dd8ed1eb012322a7a4788627cddddafbe1d7657e5b1
|
|
| MD5 |
a1d37eba45ad7eac17b240ae5407c9a0
|
|
| BLAKE2b-256 |
edcf235cfa377c01a163a54baa5dc9d33a9abd975563ae7368ccc57f10065092
|