如果我创建了两个刻度:
a = d3.scale.ordinal()
b = d3.scale.linear()
我如何知道哪个是序数轴,哪个是线性轴? 类似于 d3.scale.isOrdinal(a)
a = d3.scale.ordinal()
b = d3.scale.linear()
我如何知道哪个是序数轴,哪个是线性轴? 类似于 d3.scale.isOrdinal(a)
在创建比例尺时添加自己的类型属性:
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;
没有直接的方式可以知道比例尺的类型,也就是说比例尺函数中没有属性可以告诉你其所属的类型。
最好的方法就是通过检查某种类型中存在而另一种类型中不存在的配置方法的存在/不存在来测试比例尺接口。
例如:
typeof a.rangePoints === "function"
typeof b.rangePoints === "undefined"
序数比例尺提供了rangePoints函数,而线性比例尺则没有。