Skip to main content

earthmover-colormaps

Perceptually uniform colormaps built from the Earthmover brand palette. Designed for scientific visualization — monotonic lightness, colorblind-safe, and zero required dependencies.

earthmover colormaps

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")

quick-start output

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)

Source distribution for earthmover-colormaps 0.1.0
File Size Uploaded
earthmover_colormaps-0.1.0.tar.gz 35.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for earthmover-colormaps 0.1.0
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.1.0 This release

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