📍8 rue des martyrs
75009 Paris Cedex

cmocean 2026 : les palettes idéales pour Matplotlib

cmocean

cmocean est une bibliothèque Python open-source de colormaps conçues pour Matplotlib. Elle propose des palettes perceptuellement uniformes, pensées pour visualiser correctement des données océanographiques comme la température, la salinité, la bathymétrie ou les anomalies, tout en améliorant la lisibilité et l’accessibilité.

On sous-estime trop souvent le choix des couleurs lorsqu’on prépare une figure scientifique. Pourtant, un mauvais dégradé peut fausser la perception, lisser un signal subtil ou, pire, exclure les lecteurs souffrant de daltonisme. Bref, la palette est loin d’être un détail.

C’est précisément là qu’entre en scène cmocean. D’abord pensé pour l’océanographie, ce jeu de colormaps se révèle précieux dans bien d’autres domaines. Dans les lignes qui suivent, on passe en revue son installation, son usage avec Matplotlib, les pistes de personnalisation et son intégration dans vos chaînes Python – de Cartopy à Seaborn.

Table des matières

Comprendre cmocean et son intérêt en visualisation scientifique

Origine du projet et philosophie

A l’origine, cmocean est né d’un constat simple : les jeux de couleurs généralistes ne suffisent pas toujours pour représenter les subtilités des variables marines. L’équipe à l’initiative du projet a donc conçu des palettes alignées sur la physique des phénomènes. Températures de surface, salinité, profondeurs abyssales : chaque variable a droit à son ruban chromatique calibré.

Pourquoi ne pas se contenter des colormaps par défaut de Matplotlib ?

viridis ou plasma font déjà un excellent travail, on est d’accord. Cependant, cmocean pousse la spécialisation un cran plus loin. Ses gammes — thermal, haline, deep, et les autres — portent le nom de leur cas d’usage. Vous piochez donc la bonne palette au premier coup d’œil, sans vous demander si vous devez plutôt opter pour une séquentielle ou une divergente.

Résultat ? Moins d’erreurs classiques : on n’applique plus une échelle divergente à des valeurs uniquement positives, on évite de saturer un gradient délicat avec trop de contraste. Le temps gagné à l’étape de choix se retrouve dans la clarté finale du graphique.

Perceptual uniformity et accessibilité

Toutes les colormaps de la bibliothèque sont perceptuellement uniformes. En clair, un même écart de données se traduit par un pas de couleur identique, sans paliers “fantômes”. Vos lecteurs ne butent pas sur des ruptures visuelles artificielles.

Cerise sur le gâteau, l’accessibilité n’a pas été oubliée. Une partie des palettes tient compte des principales formes de déficience visuelle des couleurs. Publier ou partager vos figures sans craindre de léser une partie de l’audience devient beaucoup plus simple.

Installer cmocean et le charger en moins de 5 minutes

Installation via pip ou conda

Prêt à plonger ? La solution la plus directe reste pip :

  • pip install cmocean

Les adeptes d’Anaconda préfèreront probablement le canal conda-forge :

  • conda install -c conda-forge cmocean

Dans un environnement Jupyter, aucun réglage supplémentaire : dès l’installation terminée, cmocean s’intègre à Matplotlib.

Vérifier la version et tester l’import

Une fois l’installation effectuée, un petit test s’impose :

import cmocean
import matplotlib.pyplot as plt

Envie de voir la collection complète ? Un simple

print(cmocean.cm.cmapnames)

vous renvoie la liste des palettes prêtes à l’emploi. Idéal pour commencer à explorer.

Chargement rapide dans un notebook Jupyter

Essayons une première visualisation avec un tableau de valeurs aléatoires :

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

data = np.random.rand(30, 30)

plt.figure(figsize=(6, 4))
plt.imshow(data, cmap=cmocean.cm.thermal)
plt.colorbar(label="Valeur")
plt.title("Exemple avec cmocean thermal")
plt.show()

Rien de sorcier : là où vous auriez mis cmap="viridis", vous placez désormais cmocean.cm.thermal, et le tour est joué.

Les palettes cmocean : catégories et cas d’usage

Palettes séquentielles pour variables continues

Lorsque le phénomène ne fait qu’augmenter ou diminuer, une palette séquentielle suffit amplement. Voici quelques incontournables :

  • thermal : températures de surface, flux thermiques
  • haline : salinité
  • deep : profondeur, bathymétrie
  • dense : densité
  • algae : chlorophylle, productivité
  • matter : concentrations diverses
  • turbid : turbidité
  • ice : variables cryosphériques
  • gray : rendu neutre, style épuré

Dans la pratique, quelques associations gagnantes s’imposent : thermal pour la température, haline pour la salinité, deep pour la bathymétrie. Simple, efficace.

Palettes divergentes pour anomalies et gradients signés

Dès que vos données oscillent autour d’une valeur de référence (zéro en tête de liste), il faut passer en mode divergent. Trois propositions phares :

  • balance : anomalies centrées sur zéro
  • delta : différences symétriques
  • curl : gradients changeant de signe

Avec ce type de palette, le sens positif ou négatif saute aux yeux : idéal pour les anomalies de température ou les écarts de salinité.

Exemple visuel avant/après avec Matplotlib

Un visuel parle souvent mieux qu’un long discours :

fig, ax = plt.subplots(1, 2, figsize=(10, 4))

im1 = ax[0].imshow(data, cmap="viridis")
ax[0].set_title("viridis")
plt.colorbar(im1, ax=ax[0])

im2 = ax[1].imshow(data, cmap=cmocean.cm.thermal)
ax[1].set_title("cmocean thermal")
plt.colorbar(im2, ax=ax[1])

plt.tight_layout()
plt.show()

Sur un vrai champ de SST, le second panneau se révèle souvent plus parlant pour l’œil exercé.

Personnaliser cmocean avec Matplotlib, Seaborn et Cartopy

Inverser, tronquer et sous-échantillonner une palette

Besoin d’ajuster une colormap ? Rien de plus simple. On peut la retourner, la rogner ou en extraire un nombre précis de classes.

Pour inverser :

plt.imshow(data, cmap=cmocean.cm.deep_r)

Pour limiter l’échelle des valeurs :

plt.imshow(data, cmap=cmocean.cm.haline, vmin=30, vmax=38)
plt.colorbar()

Pour la discrétiser en huit niveaux :

cmap = plt.get_cmap(cmocean.cm.thermal, 8)
plt.imshow(data, cmap=cmap)

Un tronquage plus fin ? On prélève un sous-ensemble de couleurs puis on crée une nouvelle colormap via Matplotlib — quelques lignes suffisent.

Créer une colorbar vraiment lisible

Combien de figures superbes gâchées par une colorbar illisible ! Pensez toujours à nommer l’unité, à choisir des bornes pertinentes et à laisser de l’espace pour la lecture.

im = plt.imshow(data, cmap=cmocean.cm.deep)
cbar = plt.colorbar(im)
cbar.set_label("Profondeur (m)")
plt.title("Bathymétrie")

Un dernier conseil : évitez les barres trop étroites ou dépourvues de graduations claires.

Intégration avec Cartopy et Seaborn

Travailler sur des cartes géoréférencées ? Avec Cartopy, il suffit de passer la palette souhaitée :

import cartopy.crs as ccrs

fig = plt.figure(figsize=(8, 5))
ax = plt.axes(projection=ccrs.PlateCarree())
ax.coastlines()

mesh = ax.pcolormesh(lon, lat, sst, cmap=cmocean.cm.thermal, transform=ccrs.PlateCarree())
plt.colorbar(mesh, ax=ax, label="SST (°C)")
plt.title("Température de surface de la mer")
plt.show()

Dans Seaborn, c’est tout aussi direct :

import seaborn as sns
sns.heatmap(data, cmap=cmocean.cm.balance)

Une vraie passerelle entre vos outils de dataviz favoris.

Bonnes pratiques pour des figures océanographiques lisibles et publiables

Choisir la bonne palette selon la variable

Avant même d’écrire la première ligne de code, posez-vous la question : ma variable est-elle monotone ou centrée sur une valeur de référence ?

  • Séquentielle : évolution dans un seul sens
  • Divergente : écarts autour d’un centre (zéro, moyenne, etc.)
  • Neutre : quand la couleur doit rester discrète

Par exemple, une carte de chl-a gagnera souvent à employer algae, beaucoup plus parlante qu’un arc-en-ciel par défaut.

Éviter les erreurs courantes

  • Utiliser un arc-en-ciel non uniforme pour des données quantitatives
  • Sous-ou sur-saturer les extrêmes via vmin/vmax
  • Multiplier les contrastes sur un signal discret
  • Laisser le fond de carte grignoter la lisibilité
  • Négliger un test en niveau de gris ou en simulation daltonienne

Les palettes cmocean minimisent déjà la casse, mais rien ne vaut un contrôle visuel final, surtout avant dépôt d’article.

Préparer vos exports pour le web et la publication

Quelques réflexes à adopter : sortez vos figures en haute résolution, vérifiez les polices, chassez les éléments distrayants et testez le rendu sur fond clair comme sur fond sombre. Dans un notebook, n’hésitez pas à juxtaposer plusieurs versions pour décider sereinement.

Alternatives à cmocean, ressources utiles et contribution

Quelles alternatives open-source à cmocean ?

Vous aimez comparer ? Essayez donc :

  • viridis et les autres colormaps natives de Matplotlib
  • ScientificColourMaps pour une approche scientifique transversale
  • Colorcet, riche en palettes perceptuelles

Reste que cmocean parle le dialecte des océanographes, un atout lorsqu’on veut rester fidèle au sens physique des variables marines.

Documentation officielle et dépôt GitHub

Pour creuser, deux incontournables : la documentation officielle de cmocean — galerie, tutoriels, changelog — et le dépôt GitHub qui centralise bugs et évolutions. La doc Matplotlib est votre boussole pour les API de colormap et de colorbar, tandis que Cartopy couvre la partie cartographie.

Comment contribuer ou créer une nouvelle palette

L’aventure vous tente ? Vous pouvez :

  • ouvrir une issue ou soumettre une PR sur GitHub
  • partager un notebook d’exemple
  • tester l’accessibilité sur un jeu réel
  • proposer une nouvelle colormap conforme aux critères de uniformité perceptuelle

Trois filtres s’imposent alors : progression régulière de la luminance, lisibilité en niveaux de gris et solidité face aux différents types de daltonisme. Sans cela, la palette restera au stade décoratif.

Conclusion

cmocean s’impose comme un allié de choix pour vos figures Matplotlib, qu’il s’agisse de données océaniques, environnementales ou géoscientifiques. Ses atouts ? Des colormaps dédiées, des dégradés homogènes à l’œil, et une attention bienvenue à l’accessibilité.

Pour vous lancer, misez sur un trio gagnant : thermal (température), haline (salinité) et deep (bathymétrie). Jouez ensuite sur les bornes, la colorbar, l’inversion ou le centrage des divergentes pour sublimer vos jeux de données.

Enfin, confrontez toujours vos visuels à leur public : testez, imprimez, partagez, ajustez. C’est à ce prix que vos cartes et graphiques passeront du statut “correct” à celui de “convaincant”.

Questions fréquentes sur cmocean

Qu’est-ce que cmocean ?

cmocean est une bibliothèque Python proposant des colormaps perceptuellement uniformes, spécialement conçues pour visualiser des données océanographiques comme la température, la salinité ou la bathymétrie. Elle améliore la lisibilité et l’accessibilité des graphiques scientifiques.

Comment installer cmocean ?

Pour installer cmocean, utilisez la commande pip install cmocean. Si vous utilisez Anaconda, préférez conda install -c conda-forge cmocean. Une fois installé, il est directement utilisable avec Matplotlib.

Pourquoi utiliser cmocean au lieu des colormaps par défaut de Matplotlib ?

cmocean propose des palettes spécialisées pour des cas d’usage précis comme la température ou la salinité. Contrairement aux colormaps génériques, elles sont calibrées pour éviter les erreurs de perception et améliorer l’accessibilité, notamment pour les personnes daltoniennes.

Quelles sont les principales palettes disponibles dans cmocean ?

cmocean propose des palettes comme thermal (température), haline (salinité), deep (profondeur), dense (densité) et algae (chlorophylle). Chaque palette est adaptée à un type de données spécifique.

Comment visualiser les palettes disponibles dans cmocean ?

Pour afficher la liste des palettes disponibles, utilisez la commande print(cmocean.cm.cmapnames) dans Python. Cela permet d’explorer rapidement les options avant de les appliquer à vos graphiques.

cmocean est-il compatible avec les notebooks Jupyter ?

Oui, cmocean s’intègre parfaitement avec les notebooks Jupyter. Une fois installé, vous pouvez l’utiliser avec Matplotlib pour créer des visualisations directement dans vos notebooks.

Nos autres articles

Vélo électrique ou vélo classique : cette étude confirme un avantage inattendu pour votre forme physique au quotidien

Au premier coup de pédale, on pourrait croire que l’assistance électrique enlève tout intérêt sportif au vélo. C’est pourtant l’inverse : selon une vaste ...

Arrêtez de frotter vos joints de carrelage : cet appareil de salle de bain que vous avez déjà les nettoie sans effort à votre place

La plupart d’entre nous connaissent trop bien cette position acrobatique : genoux au sol, dos courbé, brosse à la main, en lutte acharnée contre ...
eca assurance téléphone

ECA Assurance téléphone : comment contacter le service client

Pour contacter ECA Assurance par téléphone, le réflexe le plus sûr est de passer par le service client figurant sur vos documents contractuels ou ...

Laisser un commentaire