earthmover-colormaps
Perceptually uniform colormaps built from the Earthmover brand palette. Designed for scientific visualization — monotonic lightness, colorblind-safe, and zero required dependencies.
Install
uv add earthmover-colormaps
Or with pip:
pip install earthmover-colormaps
Or from source:
uv add git+https://github.com/earth-mover/earthmover-colormaps.git
Quick start
import earthmover_colormaps # registers colormaps with matplotlib on import
import xarray as xr
ds = xr.tutorial.open_dataset("air_temperature")
ds.air.isel(time=0).plot(cmap="em.bloom")
import earthmover_colormaps registers everything with matplotlib's global registry, so the names work anywhere a cmap= argument is accepted (plt.imshow, plt.pcolormesh, xarray.plot(), cartopy, …).
Colormaps
| Name | Type |
|---|---|
em.violet |
Sequential |
em.lime |
Sequential |
em.signal |
Sequential |
em.diverging |
Diverging |
em.ocean |
Sequential |
em.bloom |
Sequential |
em.cycle |
Cyclic |
Every colormap has a reversed variant (append _r): "em.signal_r", "em.violet_r", etc.
Access patterns
import earthmover_colormaps
# 1. String name (after import registers them with matplotlib)
plt.imshow(data, cmap="em.signal")
# 2. Attribute access (short name, no "em." prefix)
earthmover_colormaps.signal
earthmover_colormaps.diverging
earthmover_colormaps.bloom
# 3. Dict access (full name)
earthmover_colormaps.cm["em.signal"]
earthmover_colormaps.cm["em.signal_r"]
Setting as default
To use an Earthmover colormap as your default across all plots:
import earthmover_colormaps
import matplotlib as mpl
mpl.rcParams["image.cmap"] = "em.signal"
Or in a matplotlibrc file:
image.cmap: em.signal
Design
Linear J' lightness in CAM02-UCS, gamut-clipped chroma, validated under simulated deuteranopia / protanopia / tritanopia.
To inspect any map (or compare against a matplotlib builtin):
uv run --group design python tools/compare_gui.py
Releasing
Versions come from git tags via hatch-vcs — no edits to pyproject.toml. To cut a release:
git tag v0.2.0
git push origin v0.2.0
gh release create v0.2.0 --generate-notes
Publishing the GitHub release fires .github/workflows/publish.yml, which builds and uploads to PyPI via OIDC trusted publishing.
License
Apache 2.0. See LICENSE.
Metadata
Release files for earthmover-colormaps 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| earthmover_colormaps-0.1.0.tar.gz | 35.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| earthmover_colormaps-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 74.7 kB
Release files / earthmover_colormaps-0.1.0.tar.gz
| Download URL | earthmover_colormaps-0.1.0.tar.gz |
|---|---|
| Size | 35.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1b9c424a362b2c4ca66ed70310af12165459f8a45ebfe96cd2b9bce7baee9b4e
|
|
BLAKE2b-256 checksum How to use checksums |
4d930753c124d75b4900fc17a55f91effd478b531d87d6185925402a48b2ee8a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 May 7, 2026.
Transparency logRelease files / earthmover_colormaps-0.1.0-py3-none-any.whl
| Download URL | earthmover_colormaps-0.1.0-py3-none-any.whl |
|---|---|
| Size | 39.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a4e4debf48ef126d09c03d6f5b817baaa3f79dd3a8c34a13082f38f62c236a72
|
|
BLAKE2b-256 checksum How to use checksums |
e8623fe3238cdcdc9c7db7114a81b577d66d4a61c62a1f4562af1098cf1ac708
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 May 7, 2026.
Transparency log