cmocean pour choisir une palette adaptée aux données marines

cmocean : palettes de couleurs pour l’océanographie, mode d’emploi

En bref
  • cmocean regroupe des palettes de couleurs pour représenter des données océaniques, comme une carte de température, et non des visuels pour un site.
  • La forme des données décide de la palette : une grandeur qui augmente, des valeurs de part et d’autre d’un seuil, ou une grandeur qui revient à son point de départ.
  • Une palette mal adaptée peut faire voir des limites ou des écarts qui n’existent pas dans les données.
  • L’installation se fait avec pip ou conda, après avoir vérifié sa version de Python.

Sommaire

  1. cmocean est un ensemble de palettes, et non une plateforme graphique
  2. Vingt-deux palettes, chacune adaptée à un type de donnée
  3. Séquentielle, divergente ou cyclique : la structure des données décide
  4. Installer cmocean avec pip ou conda, puis l’appeler dans Matplotlib
  5. Utiliser cmocean hors Python : MATLAB, R et Julia
  6. Régler les bornes de la palette oxy pour lire les faibles niveaux d’oxygène
  7. Foire aux questions

cmocean regroupe 22 palettes de couleurs pour afficher des données, surtout celles de l’océan.

Avec autant de choix, il n’est pas facile de savoir laquelle convient, et une palette mal choisie peut faire paraître des écarts qui n’existent pas.

Cet article explique ce qu’est cmocean, comment choisir sa palette et comment l’installer.

cmocean est un ensemble de palettes, et non une plateforme graphique

cmocean est un ensemble de palettes de couleurs pour afficher des données, surtout des données sur l’océan. Ce n’est pas une plateforme de ressources graphiques ni d’assets marketing.

On s’en sert donc pour colorer une carte de température ou de salinité, et non pour illustrer une page de site.

Une palette est perceptuellement uniforme quand des écarts égaux entre ses couleurs paraissent aussi grands à l’œil.

Avec une palette qui ne l’est pas, la couleur peut faire paraître une variation plus forte ou plus faible qu’elle ne l’est.

Vingt-deux palettes, chacune adaptée à un type de donnée

Palettes séquentielles pour une grandeur qui augmente

cmocean compte 22 palettes. Pour une grandeur qui augmente, comme la température d’une couche d’eau, on choisit une palette séquentielle.

Elle va des valeurs faibles aux valeurs fortes, sans revenir en arrière. Si les données n’ont pas ce sens de progression, une autre palette convient mieux.

Chaque palette séquentielle correspond à une grandeur qui augmente, comme le montre ce tableau avec quatre exemples.

Critère thermal haline deep algae
Grandeur représentée Température Salinité Profondeur Quantité de chlorophylle
Faibles valeurs Bleu foncé Bleu foncé Jaune clair Vert pâle
Fortes valeurs Jaune Jaune Violet foncé Vert foncé

Palettes divergentes pour des valeurs de part et d’autre d’un seuil

Une palette divergente sert à montrer l’écart à un seuil, souvent zéro. Les valeurs au-dessus et en dessous du seuil prennent deux couleurs différentes.

Par exemple, balance met le blanc sur zéro : le bleu montre ce qui est en dessous, le rouge ce qui est au-dessus, comme une hauteur de mer par rapport au niveau moyen.

Palettes cycliques pour des grandeurs qui reviennent à leur origine

Une palette cyclique sert aux grandeurs qui reviennent à leur point de départ. Elle évite le grand saut visuel entre 360° et 0°, qui ferait apparaître un contraste absent des données.

La palette topo fait exception : elle ne convient pas à ce type de grandeur. Pour inverser une palette, on ajoute _r à son nom : gray_r inverse gray.

Séquentielle, divergente ou cyclique : la structure des données décide

Le choix de la palette dépend de la structure des données. Une grandeur qui va dans un seul sens demande une palette séquentielle.

Des valeurs de part et d’autre d’un seuil, souvent zéro, demandent une palette divergente. Une grandeur qui revient à son origine demande une palette cyclique. Avec la mauvaise, le graphique montre des limites qui n’existent pas.

Trois erreurs de lecture reviennent souvent :

Installer cmocean avec pip ou conda, puis l’appeler dans Matplotlib

Pour installer cmocean, la commande standard est pip install cmocean. L’installation exige Python 3.8 ou une version ultérieure, donc il faut vérifier sa version de Python avant de lancer la commande.

La dernière version est la 4.0.3. Dans un environnement conda, la commande est conda install -c conda-forge cmocean.

Une palette s’appelle de deux façons dans un tracé Matplotlib :

  • Par l’objet cmocean.cm : après import cmocean, on écrit cmap=cmocean.cm.thermal dans plt.pcolormesh(data, cmap=...).
  • Par son nom cmo. : une fois cmocean importé, cmap="cmo.amp" fonctionne, car la palette est enregistrée dans Matplotlib sous ce nom.
  • Pour vérifier les noms disponibles : on tente cmap="cmo.amp" dans un tracé, ou on consulte les palettes listées dans cmocean.cm.cmap_d.

Utiliser cmocean hors Python : MATLAB, R et Julia

MATLAB, avec une version associée à Chad Greene

La version MATLAB s’appelle cmocean perceptually-uniform colormaps. Elle est associée à Chad Greene, et son paquet est à la version 2.02.

Ses palettes sont perceptuellement uniformes : une même différence de valeur se voit avec la même différence de couleur. On retrouve donc le principe de la version Python.

R, avec un paquet disponible sur CRAN

Dans R, le paquet CRAN porte aussi le nom cmocean. Il ajoute à ggplot2 deux fonctions : scale_color_cmocean() pour les couleurs, et scale_fill_cmocean() pour les remplissages.

Le nom de la palette se donne dans l’argument name : scale_color_cmocean(name = « thermal ») applique la palette thermal aux couleurs. Avec scale_fill_cmocean(), ce sont les zones remplies qui prennent les couleurs de la palette.

Julia, via Plots.jl et Makie.jl

Plots.jl et Makie.jl intègrent les palettes cmocean. Avec Plots.jl, on écrit simplement le nom de la palette dans le graphique, par exemple :thermal.

Makie.jl se configure avec le gestionnaire de paquets Julia. Les instructions cmocean ne donnent pas de commande d’installation séparée pour les palettes, qui sont donc disponibles avec ces outils.

Si les données sont déjà traitées en Julia, il vaut mieux tracer avec Plots.jl ou Makie.jl, sans passer par un autre langage.

Le choix se fait donc selon les outils déjà en place. La palette se choisit dans le même environnement que le calcul, sans rien ajouter. Cela évite de convertir les données d’un logiciel à l’autre.

Régler les bornes de la palette oxy pour lire les faibles niveaux d’oxygène

La palette oxy réserve ses 20 % du bas aux faibles niveaux d’oxygène, avec des couleurs rougeâtres. Les 20 % du haut servent à l’eau sursaturée, c’est-à-dire plus riche en oxygène que la normale, et s’affichent en jaune.

Le centre correspond à la saturation normale. Si les données ne dépassent pas ce niveau, la zone jaune reste vide.

Pour régler l’échelle, vmin et vmax doivent encadrer les niveaux d’oxygène à montrer. Si les données vont de 0 à 100, on met vmin=0 et vmax=100.

Si elles s’arrêtent à 80, on recadre la palette avec crop_by_percent(cmocean.cm.oxy, 20, which="max", N=None), puis on règle vmin=0 et vmax=80.

Une échelle mal réglée peut faire paraître des écarts qui n’existent pas.

Le type de données décide de la palette : une hausse continue demande une palette séquentielle, un écart à un seuil une palette divergente, un retour au point de départ une palette cyclique.

La suite consiste à vérifier sa version de Python, puis à lancer pip install cmocean. Avant de publier, on contrôle que les couleurs suivent les valeurs.

Foire aux questions

cmocean est-il diffusé sous une licence libre ?

Oui, cmocean est diffusé sous une licence libre. Le code du paquet Python est sous licence MIT, une licence qui permet d’utiliser le logiciel librement. C’est ce paquet Python que l’on installe avec pip ou conda.

Qui a conçu les palettes cmocean et où la méthode est-elle publiée ?

Les palettes cmocean ont pour principale développeuse Kristen M. Thyng. La méthode est publiée dans un article de référence paru en 2016 dans la revue Oceanography, qui présente la démarche suivie pour construire ces palettes.

Existe-t-il une palette cmocean pour représenter le relief terrestre seul ?

Non, cmocean ne propose pas de palette dédiée au seul relief terrestre. La palette topo combine les profondeurs marines et l’altitude des terres. Elle reste donc la plus proche, mais elle affiche aussi les fonds de la mer.

Quelle est la différence entre le nom cmocean et le préfixe cmo. dans Matplotlib ?

cmocean est le nom du paquet Python, qu’on installe avec pip puis qu’on importe. Une fois le paquet importé, le préfixe cmo. désigne une palette enregistrée dans Matplotlib, comme cmap="cmo.amp".

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *