Les palettes de gnuplot

Gnuplot

Palettes

Les palettes sont essentiellement utilisées dans les graphes en trois dimensions avec pm3d, mais également dans ceux en deux dimensions lorsqu'ils sont colorés en à-plat (fillcolor), dans le tracé de polygones, dans les histogrammes, etc.

Gnuplot propose 2 palettes simples prédéfinies, color et gray, mais on peut composer ses propres palettes de plusieurs façons.

  set palette rgbformulae <r>,<g>,<b> 

compose une palette en mixant les couleurs de base selon 3 fonctions appartenant à une liste prédéfinie. Les trois entiers passés en arguments sont les indices des fonctions attribuées à chaque canal de couleur. Pour connaître la liste complète de ces indices et les fonctions correspondantes, faire:

  gnuplot> show palette rgbformulae
          * there are 37 available rgb color mapping formulae:
             0: 0               1: 0.5             2: 1              
             3: x               4: x^2             5: x^3            
             6: x^4             7: sqrt(x)         8: sqrt(sqrt(x))  
             9: sin(90x)       10: cos(90x)       11: |x-0.5|        
            12: (2x-1)^2       13: sin(180x)      14: |cos(180x)|    
            15: sin(360x)      16: cos(360x)      17: |sin(360x)|    
            18: |cos(360x)|    19: |sin(720x)|    20: |cos(720x)|    
            21: 3x             22: 3x-1           23: 3x-2           
            24: |3x-1|         25: |3x-2|         26: (3x-1)/2       
            27: (3x-2)/2       28: |(3x-1)/2|     29: |(3x-2)/2|     
            30: x/0.32-0.78125 31: 2*x-0.84       32: 4x;1;-2x+1.84;x/0.08-11.5
            33: |2*x - 0.5|    34: 2*x            35: 2*x - 0.5      
            36: 2*x - 1        
          * negative numbers mean inverted=negative colour component
          * thus the ranges in `set pm3d rgbformulae' are -36..36

Pour visualiser la palette en cours:

  test palette

http://www.k1ka.be/pics/gnuplot/palette01.png

On comprend ainsi qu'avec la palette par défaut, les couleurs supérieures à l'indice 0.5 n'auront pas de composante bleue, ou qu'à l'indice 0.25, l'intensité du canal bleu est maximale, celle du canal rouge à 50% tandis que celle du canal vert est quasi nulle.

On peut obtenir une transposition d'une telle palette en une suite de n couleurs avec la commande

  show palette palette n 

Il est possible d'introduire des valeurs négatives pour les n° de fonctions avec rgbformulae. Ainsi, ceci inversera la palette par défaut:

  set palette gbformulae -7,-5,-15

Exemples

Des palettes suggestives pour visualiser les températures sur des cartes météorologiques:

  set palette defined (0 0.9 0.9 1, 35 0.3 0.3 1, 50 0.6 0.15 0.4, 70 'red', 100 'yellow')

http://www.k1ka.be/pics/gnuplot/palette03.png

  set palette rgbformulae 34,-35,-36

http://www.k1ka.be/pics/gnuplot/palette04.png

  set palette rgbformulae 22,13,-31

http://www.k1ka.be/pics/gnuplot/palette05.png

  set palette defined (0 0 0.32 0.55, 0.25 0 0.6 0.3, 0.6 0.7 0.6 0,\
     0.75 1 0.3 0, 1 1 1 0)

http://www.k1ka.be/pics/gnuplot/palette06.png

Pour des cartes géographiques en relief:

  set palette defined (0   "#086f00",  0.1 "#4fb847", 0.2 "#C5c471",\ 
     0.5 "#cf3c08", 1 "#ffffff")

http://www.k1ka.be/pics/gnuplot/palette07.png

  set palette defined ( 0 0 0.2 0, 0.1 0 0.4 0.1, 0.3 0.6 0.3 0,\
     0.5 0.8 0.6 0, 1 1 1 1 )

http://www.k1ka.be/pics/gnuplot/palette07b.png

Idem pour des vues ajoutant les fonds marins:

  set palette defined ( 0 0.1 0.1 0.2, 0.25 0.2 0.2 0.4, 0.5 0.1 0.3 0.7,\
     0.5 0 0.2 0, 0.55 0 0.4 0.1, 0.65 0.6 0.3 0, 0.8 0.8 0.6 0,\
     1 1 1 1 )

http://www.k1ka.be/pics/gnuplot/palette07c.png

D'autres palettes intéressantes:

  set palette rgbformulae -7,5,-15
  set palette rgbformulae 22,13,-31

Pour des palettes monochromes, mais non grises - à dominante colorée donc - jouer avec les palettes 3,4 et 5:

  # 3: x
  # 4: x²
  # 5: x³
  set palette rgbformulae 5,4,3

Des palettes monochromes peuvent évidemment être générées à partir des fonctions répétées de manière similaire pour chaque canal:

  # noire aux extrêmes, blanc au centre
  set palette rgbformulae 13,13,13
  
  # inversémeent
  set palette rgbformulae 14,14,14
  # palette cyclique (4x)
  set palette rgbformulae 19,19,19

Le cercle chromatique

  set palette defined (0      1 1 0, \ # jaune
                       0.1666 0 1 0, \ # vert
                       0.3333 0 1 1, \ # cyan
                       0.5    0 0 1, \ # bleu
                       0.6666 1 0 1, \ # magenta
                       0.8333 1 0 0, \ # rouge
                       1      1 1 0) 

La commande

  set palette maxcolors n

est destinée initiallement à réduire le nombre de couleurs pour les périphériques qui ne peuvent en afficher qu'un nombre limité. Un autre usage intéressant est de s'en servir pour délimiter des intervalles par niveau, donnant le même effet que les courbes de niveau.

Pour spécifier une palette avec des fonctions personnalisées, utiliser gray au lieu de x dans celles-ci:

  set palette functions (sin(gray*2*pi)+1)/2, \
                        (sin(gray*2*pi + 2*pi/3)+1)/2, \
                        (sin(gray*2*pi + 4*pi/3)+1)/2

http://www.k1ka.be/pics/gnuplot/palette09.png