Calculer la valeur RGB pour une plage de valeurs pour créer de la chaleur de la carte

Je suis en train de créer une carte de chaleur avec python. Pour cela, je dois attribuer une valeur RVB de chaque valeur dans la plage de valeurs possibles. J'ai pensé à changer de couleur du bleu (valeur minimale) plus de vert à rouge (valeur maximale).

L'image d'exemple ci-dessous explique comment j'ai pensé à la composition des couleurs: Nous avons une gamme allant de 1 (un bleu pur) à 3 (rouge pur), 2 est entre ressemblait par vert.

Calculer la valeur RGB pour une plage de valeurs pour créer de la chaleur de la carte

J'ai lu sur l'interpolation linéaire et a écrit une fonction qui est (plus ou moins) traite le calcul pour une certaine valeur dans la plage comprise entre un minimum et un maximum et renvoie un RVB tuple. Il utilise if et elif conditions (qui ne me rend pas complètement heureux):

def convert_to_rgb(minimum, maximum, value):
    minimum, maximum = float(minimum), float(maximum)    
    halfmax = (minimum + maximum) / 2
    if minimum <= value <= halfmax:
        r = 0
        g = int( 255./(halfmax - minimum) * (value - minimum))
        b = int( 255. + -255./(halfmax - minimum)  * (value - minimum))
        return (r,g,b)    
    elif halfmax < value <= maximum:
        r = int( 255./(maximum - halfmax) * (value - halfmax))
        g = int( 255. + -255./(maximum - halfmax)  * (value - halfmax))
        b = 0
        return (r,g,b)

Cependant je me demande si on pourrait écrire une fonction pour chaque valeur de couleur sans à l'aide de if conditions. Quelqu'un a une idée? Merci beaucoup!

OriginalL'auteur aldorado | 2013-12-26