2010-11-21 23 views
5

Ma question est liée à Algorithm to convert any positive integer to an RGB value mais vraiment ce n'est pas la même question - ce gars a surtout un problème de normalisation des données, j'ai en fait plus d'un problème de sélection de couleur esthétique.Fonction PHP simple pour convertir un nombre en une couleur de fond HTML heatmap?

J'ai un tas de nombres entre -1.0 et +1.0. J'ai besoin de créer un heatmap recouvert de texte. Quel est le moyen le plus simple, en utilisant PHP, de convertir chaque nombre en une couleur HTML (#rrggbb), de telle sorte que la couleur résultante est non seulement liée intuitivement à la température (c.-à-d. , avec une transition en douceur entre les deux) mais aussi qu'il convient comme couleur de fond pour le texte en noir?

Répondre

11

je mettre en œuvre comme un simple gradient linéaire entre les composantes rouge et bleue, en utilisant le sprintf function pour encoder une valeur hexadécimale:

function toHeatColor($full) { 
    $positive = ($full + 1)/2; 
    return sprintf("#%02xcc%02x", $positive * 51 + 204, (1 - $positive) * 51 + 204); 
} 

Vous pouvez voir comment la gamme de couleurs regarde http://jsfiddle.net/9QQkU/. Les valeurs correspondantes sont -1, -0,75, 0, 0,75 et 1.

+0

C'est vraiment génial et magnifique! +1 –