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