这是我目前面临的问题的 JSFiddle 。
基本上,我有一组用于绘制条形的对象。对数组进行排序后,我尝试y
相应地更新条形图的位置,但这不起作用。
所以,这是我用来绘制条形的比例:
var yScale = d3.scale.ordinal()
.domain(d3.range(0, numberOfBars))
.rangeBands([0, numberOfBars * barHeight]);
因此,如果我有 3 个条形图并且一个条形图的高度为 40 像素,那么我将映射 0-3 => 0-120 像素。
接下来,我有一个使用此比例返回正确y
位置的函数:
var y = function(d, i) {
return yScale(i);
};
使用此y
函数绘制条形后,我对数据数组进行排序并尝试重新绘制条形:
barsContainer.selectAll('.bar')
.data(chartData.users)
.transition()
.duration(750)
.delay(delay)
.attr('y', y); // Not working. I thought this would order the bars.
//.attr('y', 120); // This works though. It moves all the bars to this y.
这就是我难过的地方。由于我重新排序了数组(chartData.users),并且由于条形图与数据“连接”,所以条形图不应该y
根据数据在数组中的新位置改变它们吗?