我正在尝试为热图创建线性色标。我想要色标来遍历一大组特定颜色,其中第一个颜色对应于数据的最小值,最后一个颜色应对应于数据的最大值。
我知道我可以通过在最小值和最大值之间给域 17 个值来做到这一点,但我不知道如果用户能够更改数据集(从而更改热图的颜色),如何动态地执行此操作
本质上我想遵循,但我知道它不起作用
var colorScale = d3.scale.linear()
.range(["#6363FF", "#6373FF", "#63A3FF", "#63E3FF", "#63FFFB", "#63FFCB",
"#63FF9B", "#63FF6B", "#7BFF63", "#BBFF63", "#DBFF63", "#FBFF63",
"#FFD363", "#FFB363", "#FF8363", "#FF7363", "#FF6364"])
.domain([d3.min(dataset, function(d) {return d;}),
d3.max(dataset, function(d) {return d;})]);
谁能告诉我需要将什么放入“域”中才能使其正常工作?
编辑:
我确实找到了一些可以满足我要求的东西。我使用 R 使用 Designer.colors 函数计算了上面 17 种颜色之间的 256 种颜色,并将其放入范围内。这确实给人一种连续色阶的感觉
var colorScale = d3.scale.linear()
.range(["#6363FF", "#6364FF", "#6364FF", "#6365FF",
"... several other lines with color codes ..."
"#FF6764", "#FF6564", "#FF6464", "#FF6364"])
.domain(d3.range(1,257));
var quantize = d3.scale.quantile()
.range(d3.range(1,257))
.domain([d3.min(dataset, function(d) {return d;}),
d3.max(dataset, function(d) {return d;})]);
现在我可以以这种方式使用颜色
colorScale(quantize(dataset))
但我想知道这是否也可以用更少的代码行来完成?