Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Perceptually-Uniform, Colorblind-Friendly Colormaps

Regenbogen/Jet vermeiden

Was stattdessen zu verwenden

Wählen Sie Farbkarten für uniform wahrgenommene Änderung (in der Regel monotone Helligkeit) und CVD Robustheit:

Wählen Sie die richtige Karte für Ihre Daten

Schnelle Rezepte

Matplotlib + cmocean

Installieren Sie cmocean (Matplotlib-Port):

pip install cmocean

Setzen Sie einen globalen Standard und ein Diagramm:

import matplotlib.pyplot as plt
import numpy as np
import cmocean

# Set a perceptually-uniform default
plt.rcParams["image.cmap"] = "viridis"

# Example data
x = np.linspace(-3, 3, 400)
y = np.linspace(-3, 3, 400)
X, Y = np.meshgrid(x, y)
Z = np.hypot(X, Y)

# Sequential (distance field)
plt.imshow(Z, origin="lower", cmap=cmocean.cm.thermal)
plt.colorbar(label="Temperature-like quantity")
plt.title("Sequential, perceptually-uniform")
plt.show()

# Diverging (positive/negative anomaly)
Z_anom = np.sin(X) * np.cos(Y)
plt.imshow(Z_anom, origin="lower", cmap=cmocean.cm.balance, vmin=-1, vmax=1)
plt.colorbar(label="Anomaly")
plt.title("Diverging around 0")
plt.show()

# Cyclic (phase)
Z_phase = np.angle(np.exp(1j*(X)))
plt.imshow(Z_phase, origin="lower", cmap=cmocean.cm.phase)
plt.colorbar(label="Phase [rad]")
plt.title("Cyclic for wrap-around variables")
plt.show()

Mehr cmocean info: matplotlib.org/cmocean

Fabio Crameri’s cm Werkzeuge

Fabio Crameri developed a sophisticated toolset for scientific color maps that are universally readable by color-vision deficient and color-blind individuals, and when printed in black and white. For background information, refer to Crameri et al. (2020) (direct link) and Fabio Crameri’s EGU blogpost. The Python package cmcrameri is hosted at https://pypi.org/project/cmcrameri .

Hier ist eine schnelle Möglichkeit, die cmcrameri wissenschaftlichen Farbkarten in Python zu verwenden:

  1. Installieren

pip install cmcrameri
  1. Grundnutzung mit Matplotlib

import matplotlib.pyplot as plt
import numpy as np
import cmcrameri.cm as cm

x = np.linspace(-3, 3, 400)
y = np.linspace(-3, 3, 400)
X, Y = np.meshgrid(x, y)
Z = np.hypot(X, Y)

plt.imshow(Z, cmap=cm.batlow, origin="lower")
plt.colorbar(label="value")
plt.title("cmcrameri: batlow")
plt.tight_layout()
plt.show()

Alle Farbkarten sind unter cmcrameri.cm.<name> erhältlich.

  1. Reversierte und kategorische Varianten

plt.imshow(Z, cmap=cm.batlow_r)

Kategorische (diskrete) Versionen verwenden einen “S”-Suffix, beispielsweise cm.batlowS.

  1. Schnell verfügbare Karten durchsuchen

from cmcrameri import show_cmaps
show_cmaps()

Dies zeigt alle installierten cmcrameri-Farbkarten in der Python-Sitzung.

  1. Gute Voreinstellungen und Tipps

    • Folgedaten: Start mit batlow oder oslo.

    • Abweichende Daten auf Null: versuchen Sie vik oder broc.

Diese Paletten sind so konzipiert, dass sie wahrnehmbar bestellt und fair sind und für viele Formen von Farbvisionsmangel lesbar bleiben.

  1. Einen projektweiten Standard festlegen (optional)

import matplotlib as mpl
import cmcrameri.cm as cm
mpl.rcParams["image.cmap"] = cm.batlow

Matplotlib akzeptiert ein Colormap-Objekt für image.cmap. Siehe Matplotlib’s colormap docs für allgemeines Verhalten. ([Matplotlib][4])

Verwenden Sie cm.<name>, fügen Sie _r für reversed, S für kategorisch und show_cmaps() zu erkunden.

Zahlen farbblind-safe (Linux + GNOME)

Eine praktische Möglichkeit, simulieren häufige Farb-Vision Mängel direkt auf Ihrem Bildschirm ist die GNOME Shell Erweiterung Colorblind Filter. Es gilt Echtzeit-Filter, so können Sie vorhersehen, wie Ihre Grundstücke unter Deuteranopia, Protanopia, Tritanopia, etc. aussehen.

Best-Practice Checkliste

References
  1. Crameri, F., Shephard, G. E., & Heron, P. J. (2020). The Misuse of Colour in Science Communication. Nature Communications, 11(1), 5444. 10.1038/s41467-020-19160-7