为什么没有d3.scale量化在我的连续范围内生成离散值

时间:2017-05-27 00:19:40

标签: javascript d3.js

我尝试使用d3.scaleQuantize()创建一个比例来输出由该范围定义的多个离散量。以下是我的代码。

var d3 = require("d3")

var domain = ["a", "b","c","d"]
var color = d3.scaleQuantize()
    .domain(domain)
    .range([1,1000]);
domain.forEach(function(d){
    console.log(`${d} = ${color(d)}`);
});

以上代码的输出如下:

"a = 1000"
"b = 1000"
"c = 1000"
"d = 1000"

我希望域数组中的每个元素都应该缩放到[1,1000]的范围。为什么它不起作用?

1 个答案:

答案 0 :(得分:-1)

  

量化刻度与线性刻度类似,不同之处在于它们使用离散而非连续范围。连续输入域根据输出范围中的值的数量(即基数)被分成均匀的段。

你误解了d3中的量化比例。 D3的量化比例需要连续域输入,但在您的情况下,您的输入是离散的。使用量化比例,输入基本上分为"桶和#34;取决于范围数组中的值的数量,再次,因为您的域是离散的,它不能正确地划分您的输入数组。要实现您的需求,请使用Ordinal Scale