【发布时间】:2021-07-20 13:27:45
【问题描述】:
我正在尝试在 javascript 中编写函数,它可以根据给定值生成三种颜色之间的颜色。
这里有一个解释:
有两种颜色:#0a0000, #ffaa03 & #ffffd5
总共有 16 个传感器,例如 (0.2,0.9,2,2.3,3.5,4,7.7 ... 27.7 ) - 这可以是无序的
现在我试图从这些传感器值中找到最小值和最大值,最小值将获得 #ffffd5 颜色,最大值将获得 #0a0000 颜色,中间值将获得 #ffaa03 颜色。现在中间的所有值都会根据它们与最小值和最大值的接近程度来获得这两种颜色之间的颜色,它们也接近中间范围颜色。
更新
我已经尝试过以下方法,但它给出了错误的颜色值
let hex = '0123456789ABCDEF';
let middleValue = this.maxValue / 2;
if (x == this.minValue) {
return '#ffffd5';
} else if (x > middleValue - 1 && x < middleValue + 1) {
return '#ffaa03';
} else if (x == this.maxValue) {
return '#0a0000';
} else {
if (x < middleValue - 1) {
let perc = x * (middleValue - 1);
let hexVal = hex[Math.round(16 * perc)];
return '#FF' + hexVal + hexVal + '00';
} else if (x > middleValue + 1) {
let perc = x / (middleValue + 1) / 0.5 - 1;
let hexVal = hex[hex.length - Math.round(16 * perc)];
return '#' + hexVal + hexVal + '0000';
}
}
这是生成的图像
我希望它在哪里看起来与此相似,具体取决于值
【问题讨论】:
-
如果我理解正确的话,你有一个值数组,你需要为每个值分配一种颜色。最高值将变为红色,最低值 - 黄色,之间的值将在调色板上从红色变为黄色(橙色等)。对吗?
-
最高值为深栗色,最低值为浅黄色。介于两者之间的值将具有黄色、深黄色、橙色、红色、深红色和栗色
-
栗色是 (128, 0, 0)。什么是深栗色? 64, 0, 0 ?
标签: javascript d3.js colors