Skip to main content

Scientific colormaps for making accessible, informative and 'cmashing' plots

Project description

PyPI - Latest Release Conda-Forge - Latest Release PyPI - Python Versions GitHub Actions - Build Status CodeCov - Coverage Status JOSS - Submission Status

CMasher: Scientific colormaps for making accessible, informative and cmashing plots

The CMasher package provides a collection of scientific colormaps and utility functions to be used by different Python packages and projects, mainly in combination with matplotlib, showcased in the online documentation (where I also describe how to use the colormaps in other languages). The colormaps in CMasher are all designed to be perceptually uniform sequential using the viscm package; most of them are color-vision deficiency friendly; and they cover a wide range of different color combinations to accommodate for most applications. It offers several alternatives to commonly used colormaps, like chroma and rainforest for jet; sunburst for hot; neutral for binary; and fusion and redshift for coolwarm. If you cannot find your ideal colormap, then please open an issue, provide the colors and/or style you want, and I will try to create one to your liking! Let’s get rid of all bad colormaps in the world together!

If you use CMasher for your work, then please star the repo, such that I can keep track of how many users it has and more easily raise awareness of bad colormaps. Additionally, if you use CMasher as part of your workflow in a scientific publication, please consider citing the CMasher paper (BibTeX: cmr.get_bibtex).

Colormap overview

Below is an overview of all the colormaps that are currently in CMasher (made with the cmr.create_cmap_overview() function). For more information, see the online documentation.

CMasher Colormap Overview

In the figure, one can see this wide range of color combinations that CMasher has to offer, as I wanted to make sure that CMasher has a colormap for everyone. Because of this, CMasher’s sequential colormaps range from single major color maps like amber; ember; flamingo; freeze; gothic; and jungle, to colormaps with high perceptual ranges like apple; chroma; heat; neon; and rainforest. The diverging colormaps in CMasher have a similar variety, but more importantly, several of them have a black center instead of a white center, like iceburn; redshift; watermelon; and wildfire. Black centered diverging colormaps are quite rare as most researchers are used to white centered ones, even though a black centered diverging colormap can be rather useful in certain cases, like plotting a radial velocity map (the further away from the common center, the higher the velocity in either direction, and thus the corresponding color should be brighter).

Installation & Use

How to install

CMasher can be easily installed directly from PyPI with:

$ pip install cmasher

or from conda-forge with:

$ conda install -c conda-forge cmasher  # If conda-forge is not set up as a channel
$ conda install cmasher                 # If conda-forge is set up as a channel

If required, one can also clone the repository and install CMasher manually:

$ git clone https://github.com/1313e/CMasher
$ cd CMasher
$ pip install .

CMasher can now be imported as a package with import cmasher as cmr.

Example use

The colormaps shown above can be accessed by simply importing CMasher. This makes them available in the cmasher module, in addition to registering them in matplotlib’s cm module (with added 'cmr.' prefix to avoid name clashes). So, for example, if one were to use the rainforest colormap, this could be done with:

# Import CMasher to register colormaps
import cmasher as cmr

# Import packages for plotting
import matplotlib.pyplot as plt
import numpy as np

# Access rainforest colormap through CMasher or MPL
cmap = cmr.rainforest                   # CMasher
cmap = plt.get_cmap('cmr.rainforest')   # MPL

# Generate some data to plot
x = np.random.rand(100)
y = np.random.rand(100)
z = x**2+y**2

# Make scatter plot of data with colormap
plt.scatter(x, y, c=z, cmap=cmap, s=300)
plt.show()

For other use-cases, including an overview of CMasher’s utility functions and how to use CMasher in other programming languages, see the online documentation.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cmasher-1.6.0.tar.gz (303.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cmasher-1.6.0-py3-none-any.whl (312.7 kB view details)

Uploaded Python 3

File details

Details for the file cmasher-1.6.0.tar.gz.

File metadata

  • Download URL: cmasher-1.6.0.tar.gz
  • Upload date:
  • Size: 303.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.8

File hashes

Hashes for cmasher-1.6.0.tar.gz
Algorithm Hash digest
SHA256 99f2fe1afb285f5241f1e3a85d6f8a11f3e0f4fc84efe753987254023fa5d05a
MD5 9c36c12e731d6430a23b6ede1fa31cb3
BLAKE2b-256 695d01bdc93f5359aea629db5fc5a60617403b2be810f28bca6bc0c08ce993bc

See more details on using hashes here.

File details

Details for the file cmasher-1.6.0-py3-none-any.whl.

File metadata

  • Download URL: cmasher-1.6.0-py3-none-any.whl
  • Upload date:
  • Size: 312.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.8

File hashes

Hashes for cmasher-1.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cc4856423d7263a1cc0a7d5c055f41f8f48a5008d04ea9f9a51c980db7d5f274
MD5 15869c2bdad72e3f3ad8be7f6952d5e6
BLAKE2b-256 6cee845c25831cc8cce6e315649547cfc255165c3109f8b80733cd786238c6ad

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page