7

如果我创建两个比例:

a = d3.scale.ordinal()
b = d3.scale.linear()

我怎么知道哪个是序数,哪个是线性?就像是d3.scale.isOrdinal(a)

4

2 回答 2

11

创建比例时添加您自己的类型属性:

var scaleType = {
    LINEAR: "LINEAR",
    POWER: "POWER",
    LOG: "LOG",
    ORDINAL: "ORDINAL"    
};

var scale_a = d3.scale.ordinal()
    .domain([1,2,3])
    .range([0,100]);
scale_a.type = scaleType.ORDINAL;

var scale_b = d3.scale.linear()
    .domain([0,100])
    .range([0,100]);
scale_b.type = scaleType.LINEAR;    
于 2014-02-18T18:04:50.310 回答
5

没有直接的方法可以知道,即比例函数没有一个属性可以告诉您它是哪种类型的比例。

最好的方法是通过检查其中一种类型而不是另一种类型中是否存在任何配置方法来测试比例接口。

例如:

typeof a.rangePoints === "function"
typeof b.rangePoints === "undefined"

序数比例公开 rangePoints 函数,而线性比例不公开

于 2013-05-30T16:33:45.960 回答