cmocean : installer, utiliser et choisir les colormaps adaptées en data-viz scientifique
cmocean est une bibliothèque de colormaps perceptuellement uniformes conçues pour la visualisation de données océanographiques (et plus largement scientifiques). L’objectif est simple : produire des cartes et figures plus lisibles, plus fidèles aux gradients réels et moins sujettes aux artefacts d’interprétation que des palettes « arc-en-ciel ». Ce guide rassemble les sources officielles, l’installation et l’utilisation dans les environnements les plus courants (Python/Matplotlib, R, MATLAB, GIS), puis une méthode concrète pour choisir la bonne palette selon le type de variable (séquentielle, divergente, cyclique).
Cartographier l’écosystème cmocean : projet, sources officielles et variantes selon les plateformes (Matplotlib/GitHub, CRAN, MATLAB File Exchange, ArcGIS)
cmocean est d’abord un ensemble cohérent de colormaps, disponible via plusieurs canaux selon l’outil utilisé. Le point clé est de partir des sources officielles (documentation, dépôts, packages) afin de garantir des noms de palettes stables et un rendu conforme.
Pour Python, la référence la plus citée est la page Matplotlib dédiée à cmocean et le dépôt GitHub (matplotlib/cmocean) qui centralise code, exemples et historique. Côté R, la distribution est assurée via CRAN (package cmocean) avec une documentation PDF. Pour MATLAB, l’option la plus courante passe par MATLAB File Exchange. Enfin, dans le monde SIG, des collections existent, notamment via ArcGIS Online (item de styles/ressources), avec des déclinaisons plus ou moins fidèles selon les moteurs de rendu.
À retenir avant d’installer : selon la plateforme, l’API et même certains noms peuvent varier légèrement. L’enjeu n’est pas de mémoriser un catalogue, mais d’identifier (1) comment appeler une palette, (2) comment gérer la normalisation des valeurs et (3) comment documenter le choix avec une référence scientifique, souvent associée aux recommandations « True Colors of Oceanography » (Kristen Thyng et co-auteurs) sur la sélection de colormaps.
Comprendre les familles de colormaps cmocean et quand les utiliser (séquentielles, divergentes, cycliques) selon le type de variable
Le choix de la famille (séquentielle, divergente, cyclique) dépend d’abord de la structure sémantique de la variable : monotone, centrée sur une référence, ou périodique. Une bonne palette doit soutenir le raisonnement scientifique, pas seulement « faire joli ».
1) Séquentielles : pour des grandeurs monotones (faible → fort)
Une colormap séquentielle est adaptée quand les valeurs augmentent dans une seule direction et que le zéro n’est pas un pivot interprétatif (ex. concentration, turbidité, salinité si analysée comme intensité). La luminance doit progresser régulièrement : c’est la base de l’uniformité perceptuelle.
2) Divergentes : pour des anomalies et des écarts autour d’un point central
Une colormap divergente s’impose dès qu’il existe un centre signifiant (souvent 0, une moyenne climatique, une consigne) et que le signe compte autant que l’amplitude : anomalies de température, différences modèle–observations, tendances positives/négatives. La règle d’or : centrer la normalisation sur la valeur de référence, sinon la carte « ment » sur les surfaces en excès/déficit.
3) Cycliques : pour des variables périodiques (0° ≡ 360°)
Une colormap cyclique sert quand le début et la fin de l’échelle sont identiques : direction de courant, phase, angle, heure sur un cycle, etc. La continuité doit être parfaite au raccord, sans rupture artificielle à 0/360.
Pour les variables océanographiques fréquemment rencontrées, une règle de décision simple fonctionne dans la plupart des cas :
- Température : séquentielle si carte d’état (min→max), divergente si carte d’anomalies (écart à une référence).
- Salinité : souvent séquentielle ; divergente si l’analyse porte sur des anomalies ou des contrastes par rapport à une moyenne.
- Bathymétrie / profondeur : séquentielle (attention au choix du sens : profondeur positive ou négative selon convention).
- Courants (vitesse) : séquentielle (amplitude). Courants (direction) : cyclique. Composantes u/v : divergente centrée sur 0.
Implémentation rapide en Python/Matplotlib : import, affichage, intégration dans un workflow de figures (niveaux, imshow/pcolormesh, colorbar)
En Python, l’usage standard consiste à installer le package, puis à passer la colormap choisie à Matplotlib (imshow, pcolormesh, contourf) avec une normalisation cohérente. Le rendu final dépend autant de la palette que des bornes, de l’interpolation et de la colorbar.
Installer et lister les colormaps disponibles
Selon l’environnement (pip/conda), l’installation se fait classiquement via le gestionnaire de paquets. L’important est ensuite de vérifier que Matplotlib « voit » bien les colormaps cmocean.
# Installation (exemples) :
# pip install cmocean
# ou conda install -c conda-forge cmocean
import numpy as np
import matplotlib.pyplot as plt
import cmocean
# Exemple : vérifier rapidement une palette
plt.figure(figsize=(6, 1.2))
plt.imshow(np.linspace(0, 1, 256)[None, :], aspect='auto', cmap=cmocean.cm.thermal)
plt.yticks([])
plt.title('cmocean.cm.thermal')
plt.show()Appliquer cmocean à une carte (pcolormesh) avec colorbar
Pour des grilles (lon/lat, x/y), pcolormesh est souvent plus fidèle qu’imshow. La colorbar doit porter l’unité, et les bornes doivent être maîtrisées (vmin/vmax ou norme).
import matplotlib.colors as colors
# x, y : 1D ou 2D, z : 2D
# Exemple jouet
x = np.linspace(-5, 5, 200)
y = np.linspace(-3, 3, 120)
X, Y = np.meshgrid(x, y)
Z = np.exp(-(X**2 + Y**2))
fig, ax = plt.subplots(figsize=(7, 4))
# Séquentielle : bornes explicites
m = ax.pcolormesh(X, Y, Z, cmap=cmocean.cm.matter, shading='auto', vmin=0, vmax=1)
cb = fig.colorbar(m, ax=ax)
cb.set_label('Variable (unité)')
ax.set_title('Carte séquentielle avec cmocean')
ax.set_xlabel('x')
ax.set_ylabel('y')
plt.tight_layout()
plt.show()Divergente : centrage du zéro avec une norme adaptée
Si la variable représente un écart (positif/négatif), la palette divergente ne suffit pas : la normalisation doit être centrée, sinon la surface « positive » et la surface « négative » n’ont pas le même poids visuel.
# Z_anom : anomalies (ex. température - moyenne)
Z_anom = (X / 5.0) + 0.3*np.sin(2*Y)
fig, ax = plt.subplots(figsize=(7, 4))
norm = colors.TwoSlopeNorm(vmin=-1.5, vcenter=0.0, vmax=1.5)
m = ax.pcolormesh(X, Y, Z_anom, cmap=cmocean.cm.balance, shading='auto', norm=norm)
cb = fig.colorbar(m, ax=ax)
cb.set_label('Anomalie (unité)')
ax.set_title('Divergente centrée sur 0 (TwoSlopeNorm)')
plt.tight_layout()
plt.show()Pour des visualisations « à niveaux » (contourf), la logique reste identique : définir une grille de niveaux cohérente et faire correspondre les ticks de la colorbar aux seuils pertinents (par ex. isothermes). Sur des cartes très bruitées, l’activation d’un lissage ou d’une interpolation doit être justifiée, car elle peut créer de faux gradients.

Implémentation dans R et MATLAB : installation, appel des palettes, équivalences et différences de noms/paramètres
Dans R et MATLAB, cmocean se manipule aussi comme un objet « palette », mais la façon d’obtenir une table de couleurs (N couleurs) et de l’appliquer varie. Le réflexe à adopter : générer une palette de taille N puis la fournir à la fonction de tracé ou au système de thèmes.
Dans R (CRAN) : installer et utiliser une palette
Le package cmocean sur CRAN fournit des fonctions pour récupérer des couleurs et les injecter dans base R ou ggplot2. Selon les versions, les noms d’API peuvent différer ; la documentation CRAN (PDF) reste la source de vérité pour la signature exacte.
# Installation
# install.packages("cmocean")
library(cmocean)
# Exemple générique : obtenir 256 couleurs et les appliquer
cols <- cmocean("thermal", n = 256)
# Base R (exemple)
z <- outer(seq(-3,3,length.out=120), seq(-5,5,length.out=200), function(y,x) exp(-(x^2+y^2)))
image(z, col = cols, axes = FALSE)
box()Pour ggplot2, l’approche consiste généralement à fournir une scale manuelle ou une scale continue basée sur la palette, en veillant à aligner les bornes (limits) avec le sens scientifique (notamment pour des anomalies divergentes).
Dans MATLAB (File Exchange) : installer et activer une colormap
Sur MATLAB, la voie la plus courante est le paquet MATLAB File Exchange « cmocean perceptually-uniform colormaps ». L’installation consiste typiquement à ajouter le dossier au path, puis à appeler la colormap par son nom lors d’un tracé.
% Après installation (File Exchange) et ajout au path :
% Exemple générique
imagesc(peaks(200));
axis image; colorbar;
colormap(cmocean('thermal'));
% Divergente centrée sur 0 :
A = peaks(200);
A = A - mean(A(:));
imagesc(A); axis image; colorbar;
colormap(cmocean('balance'));Point d’attention : la gestion du centrage (équivalent de TwoSlopeNorm) se fait côté MATLAB via les limites de colorbar/axes (caxis) et le pré-traitement des bornes, ou via des utilitaires dédiés selon la version. Le principe reste le même : bornes symétriques autour de zéro pour une variable divergente.
| Environnement | Source la plus fiable | Format d’appel courant | Point de friction typique |
|---|---|---|---|
| Python | Matplotlib + GitHub (matplotlib/cmocean) | cmocean.cm. | Normalisation (vcenter) et bornes (outliers) |
| R | CRAN (package cmocean) | cmocean("nom", n=...) | Intégration ggplot2 + contrôle des limits |
| MATLAB | MATLAB File Exchange | colormap(cmocean('nom')) | Centrage du zéro (caxis) et compatibilités de versions |
| GIS | ArcGIS Online (styles/ressources) | Palette appliquée à un layer | Rendu selon moteur + export impression |
Éviter les erreurs courantes en cartographie scientifique : normalisation, centrage du zéro, daltonisme, impression, fonds, et “perceptual uniformity”
Les erreurs de colormap proviennent plus souvent des paramètres (bornes, échelle, classification) que de la palette elle-même. L’objectif est de protéger l’interprétation : un lecteur doit comprendre le gradient et les seuils sans être trompé par des ruptures visuelles artificielles.
Normalisation et bornes : vmin/vmax ne sont pas un détail
Fixer des bornes « automatiques » peut écraser la dynamique si des outliers sont présents, ou au contraire exagérer une variation faible. En pratique, les bornes devraient être justifiées : soit par des limites physiques, soit par une convention (période, domaine), soit par un protocole robuste (quantiles documentés).
Divergentes : centrer le zéro (ou la référence) de façon explicite
Une palette divergente doit avoir un centre neutre aligné avec la valeur de référence. Sans cela, le « neutre » est décalé et la carte suggère une dominance d’un signe. Dans Matplotlib, TwoSlopeNorm répond à ce besoin ; ailleurs, l’équivalent se fait via un réglage explicite des limites et du point central.
Accessibilité : daltonisme et lecture en niveaux de gris
Les palettes cmocean ont été conçues pour mieux se comporter que des palettes à variations de teinte pure, mais aucun schéma n’est universel. Une vérification minimale consiste à simuler des déficiences de vision des couleurs et à exporter un aperçu en niveaux de gris : si des structures disparaissent, la figure doit être ajustée (choix de palette, contraste, bornes).
Fond clair/sombre, superpositions et impression
Le même colormap peut rendre différemment selon le fond (blanc, gris, noir) et selon la présence de contours, vecteurs (quiver) ou isolignes. Une bonne pratique est de tester l’export final (PDF/PNG) à la résolution visée, car la compression et l’anticrénelage peuvent changer la perception de gradients fins.
« La colormap fait partie du message scientifique : elle doit préserver l’ordre des valeurs, rendre visibles les différences pertinentes et minimiser les interprétations erronées. »
Un outil historiquement associé à l’évaluation de colormaps dans l’écosystème Python est viscm, utile pour diagnostiquer la progression de luminance et repérer les zones à contraste trompeur. Même sans outil dédié, un contrôle visuel (colorbar + histogramme + version N&B) permet déjà d’éviter la plupart des pièges.
Checklist de sélection et validation : choisir une palette, tester sur données réelles, comparer à alternatives et documenter le choix (références et citation du paper)
Une sélection robuste de colormap se résume à un protocole court : identifier le type de variable, choisir la famille, régler la normalisation, puis valider l’accessibilité et la cohérence inter-figures. Documenter ce choix renforce la reproductibilité.
Checklist opérationnelle (choisir → appliquer → valider)
- Type de variable : monotone (séquentielle), anomalie autour d’une référence (divergente), angle/phase (cyclique).
- Référence centrale : si elle existe, la fixer explicitement (0, moyenne, seuil).
- Bornes : justifier vmin/vmax (physique, quantiles, période) et garder la cohérence entre figures comparées.
- Colorbar : unité, ticks pertinents, sens clair, mention des limites/coupures si clipping.
- Tests : aperçu N&B, simulation daltonisme, fond clair/sombre, export final.
- Traçabilité : noter le nom exact de la colormap, la version de l’outil, et citer les guidelines (True Colors of Oceanography / Kristen Thyng et al.).
Comparer à des alternatives sans retomber dans les travers
Comparer cmocean à d’autres collections (palettes Matplotlib, catalogues de colormaps) est utile si un style institutionnel impose des couleurs. Le critère de décision devrait rester l’uniformité perceptuelle et la compatibilité avec le message (ordre, centre, périodicité), plutôt qu’une préférence esthétique.
Dans un rapport ou un article, la documentation minimale tient en une phrase de méthode (ex. « colormap divergente centrée sur 0 ») et une référence aux recommandations « True Colors of Oceanography » lorsque le contexte s’y prête. Cela réduit les ambiguïtés lors de relectures ou de réutilisation des figures.
FAQ
cmocean, c’est quoi exactement et à quoi ça sert en visualisation scientifique ?
cmocean est une collection de colormaps conçues pour être perceptuellement uniformes et adaptées à des variables océanographiques. Elle sert à produire des figures où l’ordre des valeurs et les contrastes sont mieux respectés qu’avec des palettes non uniformes, réduisant les artefacts d’interprétation.
Quelle colormap cmocean choisir pour la bathymétrie, la température, la salinité ou la vitesse des courants ?
La règle est de choisir d’abord la famille : séquentielle pour bathymétrie/profondeur (monotone), température « état » et salinité (intensité), divergente pour anomalies (température ou salinité par rapport à une référence) et cyclique pour direction/phase. Ensuite, les bornes et le centrage (si nécessaire) déterminent la lisibilité finale.
Comment installer et utiliser cmocean dans Python avec Matplotlib ?
Après installation via un gestionnaire de paquets (pip ou conda), l’usage courant consiste à importer cmocean puis à passer une palette comme cmocean.cm.thermal à imshow, pcolormesh ou contourf. Pour des anomalies, une normalisation centrée (ex. TwoSlopeNorm) est indispensable pour respecter le zéro.
Le package cmocean existe-t-il pour R (CRAN) et comment l’utiliser ?
Oui, cmocean est disponible sur CRAN. Le principe est de générer une palette de N couleurs (par exemple 256) puis de l’appliquer à un tracé base R ou à une échelle continue dans ggplot2, en contrôlant les limites pour éviter que l’auto-scaling ne déforme le message.
Comment utiliser les colormaps cmocean dans MATLAB et quels sont les prérequis ?
La distribution la plus répandue passe par MATLAB File Exchange. Une fois installée et ajoutée au path, la palette s’applique via colormap(cmocean('nom')). Pour une variable divergente, il faut régler des limites symétriques et un centre cohérent (via les limites d’axes/colorbar) afin que le neutre corresponde à la référence.
cmocean est-il adapté aux personnes daltoniennes et à l’impression en niveaux de gris ?
Les palettes cmocean sont conçues pour mieux préserver la progression de luminance, ce qui aide pour l’accessibilité et la lecture en niveaux de gris. Une validation reste nécessaire : simulation de déficiences de vision des couleurs, test N&B et vérification du rendu après export (PDF/PNG), surtout si des détails fins doivent rester visibles.
Mettre cmocean au service de l’interprétation : une méthode reproductible plutôt qu’un simple “choix de couleurs”
Une figure scientifique fiable repose sur un trio : colormap, normalisation et annotation (colorbar, unités, bornes). En adoptant cmocean avec une logique par type de variable (séquentielle/divergente/cyclique) et une checklist de validation, les cartes deviennent plus comparables, plus accessibles et plus défendables lors d’une relecture.
Le résultat attendu n’est pas une esthétique uniforme, mais une meilleure correspondance entre perception visuelle et structure des données. C’est précisément le rôle de cmocean et des recommandations associées à « True Colors of Oceanography » : transformer un choix graphique en décision méthodologique traçable.
Sommaire
Newsletter
Recevez les derniers articles directement par mail

