Here is a JSFiddle我目前面临的问题。我该如何解决这个条形图排序问题?
基本上,我有一个对象的数组,我用来绘制一些酒吧。在对数组进行排序后,我尝试相应地更新小节'y
的位置,但这不起作用。
所以,这是我用来绘制酒吧规模:
var yScale = d3.scale.ordinal()
.domain(d3.range(0, numberOfBars))
.rangeBands([0, numberOfBars * barHeight]);
所以,如果我有3间酒吧和酒吧为40像素高,然后我映射0-3 => 0-120px 。
接下来,我有一个使用这种规模返回家园的权利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
?
[This Sample](http://jsbin.com/ijepod/1/edit)可能会帮助 – functionoid
谢谢!这是最受欢迎的。所以我不需要对数组进行排序,然后通过'data()'函数将其绑定到数据上,我只需要在条上调用'sort()'函数。如果你想提交某种答案,我会很乐意接受它。 – Ashitaka
我很高兴它为你工作。既然你自己想出了自己,你应该得到信用。如果您发现评论有帮助,您可以投票评论。 – functionoid