如何在Javascript中从colormap生成颜色?

如何在Javascript中从colormap生成颜色?,javascript,colormap,Javascript,Colormap,在Javascript中,我想根据颜色映射(如下图所示)中-30°C到+50°C的温度生成十六进制颜色。 我的Javascript代码包含在标记之间的.html文件中 可能吗? 谢谢您可以使用hsl颜色的色调并将其缩放到温度,然后将hsl颜色转换为十六进制值 函数hslToHex(h、s、l){ l/=100; 常数a=s*数学最小值(l,1-l)/100; 常数f=n=>{ 常数k=(n+h/30)%12; const color=l-a*Math.max(Math.min(k-3,9-k

在Javascript中,我想根据颜色映射(如下图所示)中-30°C到+50°C的温度生成十六进制颜色。

我的Javascript代码包含在标记之间的.html文件中
可能吗?
谢谢

您可以使用hsl颜色的色调并将其缩放到温度,然后将hsl颜色转换为十六进制值

函数hslToHex(h、s、l){ l/=100; 常数a=s*数学最小值(l,1-l)/100; 常数f=n=>{ 常数k=(n+h/30)%12; const color=l-a*Math.max(Math.min(k-3,9-k,1),-1); 返回Math.round(255*color).toString(16).padStart(2,'0'); }; 返回`${f(0)}${f(8)}${f(4)}`; } 常量刻度={ 最小值:{值:-30,色调:1}, 最大值:{值:50,色调:245} } 功能温度颜色(温度){ 温度=数学最小值(scale.max.value,数学最大值(scale.min.value,temp)); 常数范围=scale.max.value-scale.min.value; const hueRange=scale.max.hue-scale.min.hue; 常数值=(温度-刻度最小值)/范围; 常量色调=比例最大色调-色调*值; 返回hslToHex(色调,100,50) } (功能测试){ const container=document.getElementById(“容器”) 常数时间=[-40,-30,-20,-10,0,10,15,20,25,30,40,41,42,43,44,45,50,60] 用于(让温度为临时值){ const box=document.createElement(“div”); box.textContent=temp; box.style.background=temperatureToColor(温度) container.append(框) } })()
#容器{
显示器:flex;
}
#容器>分区{
宽度:10px
高度:10px;
填充:10px;
颜色:白色;
}

您可以使用hsl颜色的色调并将其缩放到温度,然后将hsl颜色转换为十六进制值

函数hslToHex(h、s、l){ l/=100; 常数a=s*数学最小值(l,1-l)/100; 常数f=n=>{ 常数k=(n+h/30)%12; const color=l-a*Math.max(Math.min(k-3,9-k,1),-1); 返回Math.round(255*color).toString(16).padStart(2,'0'); }; 返回`${f(0)}${f(8)}${f(4)}`; } 常量刻度={ 最小值:{值:-30,色调:1}, 最大值:{值:50,色调:245} } 功能温度颜色(温度){ 温度=数学最小值(scale.max.value,数学最大值(scale.min.value,temp)); 常数范围=scale.max.value-scale.min.value; const hueRange=scale.max.hue-scale.min.hue; 常数值=(温度-刻度最小值)/范围; 常量色调=比例最大色调-色调*值; 返回hslToHex(色调,100,50) } (功能测试){ const container=document.getElementById(“容器”) 常数时间=[-40,-30,-20,-10,0,10,15,20,25,30,40,41,42,43,44,45,50,60] 用于(让温度为临时值){ const box=document.createElement(“div”); box.textContent=temp; box.style.background=temperatureToColor(温度) container.append(框) } })()
#容器{
显示器:flex;
}
#容器>分区{
宽度:10px
高度:10px;
填充:10px;
颜色:白色;
}

欢迎来到StackOverflow。现在你的问题还不清楚。我建议您选择在注册StackOverflow时建议您执行的操作,并阅读。这样你就能更好地了解一个好问题是什么样子的,然后你可以更新你的问题来提高它的质量,从而提高你得到答案的机会。这些资源的存在是为了帮助您在这里获得良好的体验,因此请使用它们。谢谢。欢迎来到StackOverflow。现在你的问题还不清楚。我建议您选择在注册StackOverflow时建议您执行的操作,并阅读。这样你就能更好地了解一个好问题是什么样子的,然后你可以更新你的问题来提高它的质量,从而提高你得到答案的机会。这些资源的存在是为了帮助您在这里获得良好的体验,因此请使用它们。谢谢