2010-11-21 11 views
5

Moje pytanie jest związane z Algorithm to convert any positive integer to an RGB value, ale tak naprawdę to nie to samo pytanie - ten facet ma głównie problem z normalizacją danych, faktycznie mam więcej estetycznego problemu z doborem kolorów.Prosta funkcja PHP do konwersji liczby na kolor tła HTML mapy termicznej?

Mam kilka liczb od -1,0 do +1,0. Potrzebuję stworzyć mapę cieplną z nałożonym tekstem.

Jaki jest najprostszy sposób, za pomocą PHP, przekonwertować każdą liczbę na kolor HTML (#rrggbb), w taki sposób, że wynikowy kolor nie tylko jest intuicyjnie powiązany z temperaturą (np. Najbłahiej dla najzimniejszych i najciemniejszych dla najgorętszych) , z pewnym płynnym przejściem pomiędzy), ale także, że nadaje się jako kolor tła dla tekstu w kolorze czarnym?

Odpowiedz

11

chciałbym wdrożyć go jako prosty gradient liniowy między czerwonymi i niebieskimi składników, używając sprintf function zakodować do wartości hex:

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

Można zobaczyć jak gama kolorów wygląda na http://jsfiddle.net/9QQkU/. Odpowiadające wartości to -1, -0,75, 0, 0,75 i 1.

+0

To jest rzeczywiście genialne i piękne! +1 –