Einfache PHP -Funktion zum Umwandeln einer Zahl in eine HEATMAP -HTML -Hintergrundfarbe?
-
26-09-2019 - |
Frage
Meine Frage bezieht sich auf Algorithmus, um eine positive Ganzzahl in einen RGB -Wert umzuwandeln Aber wirklich ist es nicht die gleiche Frage - dieser Typ hat meistens ein Problem der Datennormalisierung, ich habe tatsächlich mehr ästhetisches Problem mit der Farbauswahl.
Ich habe eine Reihe von Zahlen zwischen -1.0 und +1,0. Ich muss eine mit Text überlagte Heatmap erstellen.
Was ist der einfachste Weg, mit der Verwendung von PHP jede Zahl in eine HTML -Farbe (#RRGGBBBBB) umzuwandeln, so dass die resultierende Farbe nicht nur intuitiv mit der Temperatur zusammenhängt (dh für kälteste und rötlichste für die heißesten, mit einigen glattem glattesten Übergang dazwischen), aber auch, dass es als Hintergrundfarbe für Schwarzfarben-Text geeignet ist?
Lösung
Ich würde es als einfachen linearen Gradienten zwischen den roten und blauen Komponenten implementieren, wobei ich die verwenden würde sprintf
Funktion zu einem Hex -Wert codieren:
function toHeatColor($full) {
$positive = ($full + 1) / 2;
return sprintf("#%02xcc%02x", $positive * 51 + 204, (1 - $positive) * 51 + 204);
}
Sie können sehen, wie sich das Farbenbereich aussieht http://jsfiddle.net/9qqku/. Die entsprechenden Werte betragen -1, -0,75, 0, 0,75 und 1.