Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.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 d3将4种颜色映射到4个数字范围,看起来有点像一个非常基本的热图_Javascript_D3.js - Fatal编程技术网

Javascript d3将4种颜色映射到4个数字范围,看起来有点像一个非常基本的热图

Javascript d3将4种颜色映射到4个数字范围,看起来有点像一个非常基本的热图,javascript,d3.js,Javascript,D3.js,我正试图让这一切正常运作: 0=灰色 1-33.33=绿色 33.34-66.66=黄色 66.67-100=红色 它目前不起作用,但我这里有一个代码示例: 这是特定的代码块: var colors = ["#CCCCCC","#55AF29","#FFD017","#B72E00"]; var heatmapColor = d3.scale.linear() .domain(d3.range(0, 1, 1.0 / (colors.len

我正试图让这一切正常运作:

  • 0=灰色
  • 1-33.33=绿色
  • 33.34-66.66=黄色
  • 66.67-100=红色
它目前不起作用,但我这里有一个代码示例:

这是特定的代码块:

    var colors = ["#CCCCCC","#55AF29","#FFD017","#B72E00"];

        var heatmapColor = d3.scale.linear()
            .domain(d3.range(0, 1, 1.0 / (colors.length - 1)))
          .range(colors);

        var getData = d3.extent(jsondata.kpi, function (d) { return +d.status });
        var c = d3.scale.linear().domain(getData).range([0, 1]); 
以及显示器:

    .style("fill", function(d) { return heatmapColor(c(d))});
我一直在寻找这个问题的答案,但这并不是我想要的,因为它将动态值映射到颜色集:


感谢您的帮助

听起来你想要的是一个或一个——一个尺度,它接受一个连续的输入值,并将其拆分为若干个箱子,以便转换为一组离散的输出值

对于量化比例,您可以将域指定为正常值(
[min,max]
),并且存储单元的大小由范围中的值的数量决定,因此每个存储单元的大小相同

对于阈值比例,将域指定为阈值集,超过该阈值,应使用范围中的下一个值;阈值应该比范围值少一个

@FernOfTheAndes为您提供的是一个:一个具有不同域/范围块的线性比例。域中两个点之间的值将转换为范围中相应两点之间相同距离的值

因此,对于具有域
[0,33,66100]
和范围
[灰色、绿色、黄色、红色]
的多段线比例,值0映射为灰色,值33映射为绿色,但值15映射为介于两者之间的灰绿色

相反,对于具有域
[1,33,66]
和范围
[灰色、绿色、黄色、红色]
的阈值标度,任何大于或等于1但小于33的值都将映射为纯绿色


或者,您可以使用带有域
[0100]
、范围
[绿色、黄色、红色]
的量化标尺,并使用单独的测试在值为0时指定灰色。

您的JSFIDLE根本不起作用。这让我很难帮助您。它为我加载,我的数据文件在dropbox上,可能这给您带来了问题?我可能离开这里,但为了方便起见,我硬编码了域值(您可以计算),并更改了heatmapColor()的参数。这是。@featherz啊,是的,很可能是DropBox;该域名被我公司的DNSOne列入黑名单。更多关于我快速增长的@AmeliaBR链接列表的信息……从您的解释中可以了解到很多。从你忠实的粉丝那里:-)@FernOfTheAndes你显然没有看到我在混合了阈值尺度和分位数尺度(这又是另一回事)之后所做的快速编辑。而且你的小提琴演奏得很好——只是不太符合OP的要求。使用阈值刻度的小提琴工作版本:刻度中有相当数量的细微差别。这是D3中我试图构建一个全面视图的区域之一……这当然有帮助。