我将并行坐标源代码here迁移到最新的d3js版本(d3js 4.5.0)。我坚持这条路:
var x = d3.scale.ordinal().rangePoints([0, width], 1)
似乎在d3js v4中rangePoints
函数不再存在。我可以更改为d3。scaleOrdinal(),但它只有range
函数,而不是rangePoints
函数。有什么线索吗?
答案 0 :(得分:23)
在D3 v4中,创建了两个新的比例:scaleBand
和scalePoint
,它们现在具有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
只接受范围数组,而不再接受填充。