2010-11-21 10 views
5

La mia domanda è relativa a Algorithm to convert any positive integer to an RGB value ma in realtà non è la stessa domanda - quel ragazzo ha principalmente un problema di normalizzazione dei dati, in realtà ho più di un problema estetico di selezione del colore.Funzione PHP semplice per convertire un numero in un colore di sfondo HTML heatmap?

Ho un sacco di numeri tra -1.0 e +1.0. Devo creare una mappa termica sovrapposta al testo.

Qual è il modo più semplice, utilizzando PHP, di convertire ciascun numero in un colore HTML (#rrggbb), in modo tale che il colore risultante non solo sia intuitivamente correlato alla temperatura , con una transizione graduale in mezzo) ma anche che è adatto come colore di sfondo per il testo in nero?

risposta

11

avrei attuarla come una semplice sfumatura lineare tra i componenti rosso e blu, con il sprintf function per codificare un valore esadecimale:

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

Si può vedere come la gamma di colori guarda http://jsfiddle.net/9QQkU/. I valori corrispondenti sono -1, -0.75, 0, 0.75 e 1.

+0

Questo è davvero geniale e bello! +1 –