Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 彩色光谱优化_Javascript - Fatal编程技术网

Javascript 彩色光谱优化

Javascript 彩色光谱优化,javascript,Javascript,我有以下实现,它工作正常,功能正常。我正在检查以下javascript对象中的fname属性是否相同,然后为这些成对的对象指定相同的颜色 下面是一个javascript对象示例: {"value": 10,"series": 1,"category": "LG","fname": "","valueColor": ""}, 但是,我想使用更独特的颜色,而不是非常相似的颜色,例如在给定的颜色中,颜色几乎都是绿色光谱。另外,我不想在valueproperty等于0时给出任何颜色值 这里是核心实现

我有以下实现,它工作正常,功能正常。我正在检查以下javascript对象中的
fname
属性是否相同,然后为这些成对的对象指定相同的颜色

下面是一个javascript对象示例:

{"value": 10,"series": 1,"category": "LG","fname": "","valueColor": ""},
但是,我想使用更独特的颜色,而不是非常相似的颜色,例如在给定的颜色中,颜色几乎都是绿色光谱。另外,我不想在
value
property等于0时给出任何颜色值

这里是核心实现

function colorSpectrum(N) {
    var colorMap = [], inc = 50, start = 1000;
    for (i = start; i < start+N*inc; i+=inc) {
        var num = ((4095 * i) >>> 0).toString(16);
        while (num.length < 3) {
            num = "0" + num;
        }
        colorMap.push("#" + num);
    }
    return colorMap;
}

function process(data){
    var map = {}, colorMap = colorSpectrum(data.length);
    data.forEach(function(item, index){
        if(!map.hasOwnProperty(item.fname)){
            map[item.fname] = colorMap[index];
        }
        data[index].valueColor = map[item.fname];
    }); 

    return data;
}
函数色谱(N){
var colorMap=[],inc=50,start=1000;
对于(i=start;i>>0.toString(16);
while(num.length<3){
num=“0”+num;
}
colorMap.push(“#”+num);
}
返回彩色地图;
}
功能流程(数据){
var-map={},colorMap=colorSpectrum(data.length);
data.forEach(函数(项、索引){
如果(!map.hasOwnProperty(item.fname)){
map[item.fname]=colorMap[index];
}
数据[index].valueColor=map[item.fname];
}); 
返回数据;
}

尝试随机挑选颜色

function colorSpectrum(N) {
    var colorMap = [];
    for (i = 0; i < N; i+=1) {
        var color = getRndColor()
        colorMap.push("#"+color);
    }
    return colorMap;
}

function getRndColor() {
    var n = Math.floor(Math.random()*255*255*255);
    var hex = Number(n).toString(16);
    while(hex.length < 6) {
        hex = "0"+hex;
    }
    return hex;
}
函数色谱(N){
var colorMap=[];
对于(i=0;i
如果您想要从黑色到白色的全套颜色,您需要更改此部分:

var colorMap = [], inc = 50, start = 1000;
for (i = start; i < start+N*inc; i+=inc) {
var colorMap=[],inc=50,start=1000;
对于(i=start;i
你看,循环从1000开始,这是已经是绿色的颜色。刻度应该从0到4095(对于像
#007
#abc
等3个字符的值),并根据数据量增加


然而,我建议至少通过单独生成所有RGB组件而不是立即生成完整的十六进制值来获得一点控制。

我不确定我是否理解问题所在。您能更好地解释一下吗?也许只是展示一下您希望实现的目标。@Shomz,我想为我的每个组件分配更独特的颜色JavaScript对象。我的当前实现将颜色从白色扩展到黑色。考虑使用HSL更容易得到一个漂亮的调色板。在JavaScript中有任何样本吗?