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.

Perzeptuell einheitliche, farbenblinde Colormaps

Regenbogen/Jet vermeiden

Was stattdessen zu verwenden ist

Wählen Sie Colormaps, die für * gleichmäßig wahrgenommene Veränderung * (normalerweise monotone Leichtigkeit) und *CVD-Robustheit * konzipiert sind:

Die richtige Karte für Ihre Daten auswählen

Schnelle Rezepte

Matplotlib + cmocean

Installieren Sie cmocean (Matplotlib Port):

pip install cmocean

Setzen Sie einen globalen Standard und Plot:

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

Weitere cmocean Infos: matplotlib.org/cmocean]

Fabio Crameris 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 Colormaps in Python zu verwenden:

  1. Installieren

pip install cmcrameri
  1. Grundlegende Nutzung 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()

All colormaps are available under cmcrameri.cm.<name>.

  1. Umgekehrte und kategorische Varianten

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

Categorical (discrete) versions use an “S” suffix, for example cm.batlowS.

  1. Schnell durchsuchen verfügbare Karten

from cmcrameri import show_cmaps
show_cmaps()

Dies zeigt alle installierten cmcrameri Colormaps in der Python-Sitzung an.

  1. Gute Defaults und Tipps

    • Sequenzielle Daten: Beginnen Sie mit batlow oder oslo.

    • Diverging data centered on zero: try vik or broc.

Diese Paletten sind so konzipiert, dass sie perzeptuell geordnet und fair sind und für viele Formen von Farbmangel lesbar bleiben.

  1. Setzen Sie einen projektweiten Standard (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 Matplotlibs Colormap-Dokumente für allgemeines Verhalten. ([Matplotlib][4])

Verwenden Sie cm.<name>, fügen Sie _r für umgekehrt, S für kategorisch und show_cmaps() zum Erkunden hinzu.

Stellen Sie Figuren farbenblind sicher (Linux + GNOME)

Eine praktische Möglichkeit, häufige Farbsichtmängel direkt auf Ihrem Bildschirm zu simulieren, ist die GNOME Shell-Erweiterung **Farbblindfilter **. Es wendet Echtzeitfilter an, so dass Sie eine Vorschau erhalten können, wie Ihre Plots unter Deuteranopia, Protanopia, Tritanopia usw. 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