我的问题与Algorithm to convert any positive integer to an RGB value有关,但实际上不是同一个问题-那家伙主要是一个数据标准化问题,实际上我更多的是审美选色问题。
我有一堆数字介于-1.0和+1.0之间。我需要创建一个覆盖文本的热图。
使用PHP将数字转换为HTML颜色(#rrggbb)的最简单方法是,使所得颜色不仅与温度直观相关(即最冷的最蓝, HitTest 的最红,平滑一些)两者之间的过渡),还适合用作黑色文本的背景色吗?
最佳答案
我将其实现为红色和蓝色分量之间的简单线性渐变,使用 sprintf
function编码为十六进制值:
function toHeatColor($full) {
$positive = ($full + 1) / 2;
return sprintf("#%02xcc%02x", $positive * 51 + 204, (1 - $positive) * 51 + 204);
}
您可以在http://jsfiddle.net/9QQkU/看到颜色范围。对应的值为-1,-0.75、0、0.75和1。