我正在尝试重现与此类似的图表 - http://bl.ocks.org/syntagmatic/raw/3150059/
使用 d3 v4。这是我的带有更新代码的叉子 - http://bl.ocks.org/iamdeadman/a75c0a97459b131eccbc24e99c340ab8/321e048d287293525a9f23ae276025aa8916f7f6
由于在将上述块移植到 d3 v4 时发生了一些不正确/错误的更改,我现在看到的布局是这样的 -
即所有轴都移动到左右位置。
我怀疑这是因为在放置期间为轴提供了不正确的 x 比例。
所以,最初它们是这样初始化的 -
xscale = d3.scale.ordinal().rangePoints([0, w], 1),
&我将其更改为-
xscale = d3.scaleOrdinal().range([0, w], 1),
在此之后为他们所做的所有维度提取和创建比例 -
xscale.domain(dimensions = d3.keys(data[0]).filter(function(k) {
return (_.isNumber(data[0][k])) && (yscale[k] = d3.scaleLinear()
.domain(d3.extent(data, function(d) { return +d[k]; }))
.range([h, 0]));
}).sort());
所以现在,
var g = svg.selectAll(".dimension")
.data(dimensions)
.enter().append("svg:g")
.attr("class", "dimension")
.attr("transform", function(d) { console.log(d, xscale(d)); return "translate(" + xscale(d) + ")"; })
d
所以现在在这里我得到 xscale 作为(0 / chart width-1)
响应的所有值。不知道为什么。
任何人都可以在这里帮助查找/解决问题。