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

时间:2013-05-30 16:09:04

标签: d3.js

如果我创建两个比例:

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

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

这样的东西

2 个答案:

答案 0 :(得分:9)

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

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;    

答案 1 :(得分:5)

没有直接的方法可以知道,即没有比例函数的属性可以告诉你它的类型是什么。

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

例如:

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

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