如何获得D3中的比例类型?

nac*_*cab 7 d3.js

如果我创建两个比例:

a = d3.scale.ordinal()
b = d3.scale.linear()
Run Code Online (Sandbox Code Playgroud)

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

use*_*323 9

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

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;    
Run Code Online (Sandbox Code Playgroud)


Luc*_*caM 5

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

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

例如:

typeof a.rangePoints === "function"
typeof b.rangePoints === "undefined"
Run Code Online (Sandbox Code Playgroud)

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