D3线性缩放-色码不匹配



我使用3种不同的缩放分位数,量化和线性从D3库与颜色的范围。分位数和量化似乎工作得很好,在线性尺度似乎不起作用。

下面是示例代码。

var measures = [1,2,3,4,5,6,7,8,9];
var colorScale = ["#f7fcfd", "#ccece6", "#66c2a4", "#238b45", "#00441b"];
var scale = d3.scale.linear().domain(measures).range(colorScale);
document.write('Linear ');
document.write(scale(1) + ',' + scale(2) + ',' + scale(3) + ',' + scale(6) + ',' + scale(7) + ',' + scale(8) + ',' + scale(9)+' ');
scale = d3.scale.quantize().domain(measures).range(colorScale);
document.write('Quantize ');
document.write(scale(1) + ',' + scale(2) + ',' + scale(3) + ',' + scale(4) + ',' + scale(5) + ',' + scale(6) + ',' + scale(7)+' ');

链接到小提琴

你可以清楚地看到9,8,7,6的值在线性缩放的情况下是#000。但在量化中,它工作得很好。

请告诉我在这种情况下我哪里错了。
希望我的问题很清楚。谢谢你的帮助

如果我理解正确,线性的范围是colorScale的长度,因此,这种行为是正确的。见https://github.com/d3/d3 - 3. - x - api - reference/blob/master/quantitative scales.md #线性的Given a value x in the input domain, returns the corresponding value in the output range.. 通常的解决方案是尝试scale(5 % colorScale.length)

希望这对你有帮助!

最新更新