D3js v4:scaleOrdinal没有rangePoints()

时间:2017-01-30 17:03:18

标签: d3.js

我将并行坐标源代码here迁移到最新的d3js版本(d3js 4.5.0)。我坚持这条路:

var x = d3.scale.ordinal().rangePoints([0, width], 1) 

似乎在d3js v4中rangePoints函数不再存在。我可以更改为d3。scaleOrdinal(),但它只有range函数,而不是rangePoints函数。有什么线索吗?

1 个答案:

答案 0 :(得分:23)

在D3 v4中,创建了两个新的比例:scaleBandscalePoint,它们现在具有scale.ordinal在版本3中的一些功能(其中rangePoints )。

它记录在changelog

  

类似地,ordinal.rangePoints和ordinal.rangeRoundPoints方法已被替换为序数比例的新子​​类:点比例。 3.x中的以下代码:

var x = d3.scale.ordinal()
.domain(["a", "b", "c"])
.rangePoints([0, width]);
     

在4.0中等同于此:

var x = d3.scalePoint()
.domain(["a", "b", "c"])
.range([0, width]);

因此,您需要的比例是scalePoint

  

点标度是带标度的变体,带宽固定为零。点标度通常用于具有序数或分类维度的散点图。

因此,请将您的比例更改为:

var x = scalePoint()
    .range([0, width])
    .padding(.1);

注意padding:在点数刻度中,range只接受范围数组,而不再接受填充。