@ccueil Colles

Colormap en python


Palette de couleurs avec un paramètre en python

On a souvent besoin de faire correspondre une grandeur avec une couleur, associer l'intensité d'un phénomène avec une échelle colorée, ou encore associer un résultat numérique à une couleur en vu d'une représentation graphique pertinente et esthétique.
Si on veut balayer toute une palette de couleurs, il s'agit donc de faire correspondre un unique nombre avec un triplet d'entiers pour une couleur définie en rgb


Ce qui précède est programmé en html/javascript et est détaillé à cette page.
Ci-dessous les éléments de programmation en python qui permettent d'obtenir ce balayage d'une palette de couleurs.
La fonction principale est ColorMap qui associe à un entier une couleur au format rgb.
La représentation graphique fait appel à la bibliothèque Libxy.

Programme python

La fonction centrale est ColorMap qui associe (map en anglais) un nombre entier inférieur à 256 à une couleur au format rgb, soit trois entiers (r,g,b) compris entre 0 et 255 et désignant respectivement les intensités en rouge (red), vert (green) et bleu (blue).
On utilise ici ensuite simplement cette fonction pour dessiner un dégradé des couleurs successives de la palette, ici de 256 couleurs. La partie graphique utilise Libxy.

from Libxy import *
InitGraph()

def ColorMap(p):
    sr=0 ; sg=0 ; sb=0;
    if (p < 64):
        sr=0 ; sg=p*4 ; sb=255;
    elif (p < 128): 
        sr=0 ; sg=255 ; sb=(255-(p-64)*4);
    elif (p < 192): 
        sr=(p-128)*4 ; sg=255  ;sb = 0;
    elif (p < 256):
        sr=255 ; sg=(256-(p-191)*4) ; sb=0;
    return (sr,sg,sb);

N=200
dx=20.0/N
X=[round(-10+i*dx,2) for i in range(N+1)]
for i in range(N): 
    A=(X[i],1);B=(X[i],-1);C=(X[i+1],-1);D=(X[i+1],1)
    r=round(255.0*i/(N-1))
    s=ColorMap(r)
    #print(r,s)
    Polygon(A,B,C,D,width=2,outline=s,fill=s)

SaveGraph()

Voir aussi: