我的问题与Algorithm to convert any positive integer to an RGB value有关但实际上它不是同一个问题 – 那个人主要是数据规范化问题,实际上我有更多的审美颜色选择问题.
我有一堆介于-1.0和1.0之间的数字.我需要创建一个叠加文本的热图.
使用PHP的最简单方法是将每个数字转换为HTML颜色(#rrggbb),这样生成的颜色不仅直观地与温度相关(即最冷的最热,最热的最红,最流畅的一些)两者之间的过渡)但它也适合作为黑色文本的背景颜色?
最佳答案
我将它实现为红色和蓝色组件之间的简单线性渐变,使用
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.75和1.