d3排序对象数组

时间:2014-01-30 11:43:21

标签: sorting d3.js

如何在对包含数据的对象数组进行排序后,在d3中更新垂直条形图?

我的(肯定很小)问题最好在这里看到:http://jsfiddle.net/yJq3e/3/

创建条形图后,我调用sortBars()函数,该函数工作正常(console.log可以告诉我),直到我更新y属性。我假设它连接到y属性实际上依赖于索引(或键?)。但是,我会想到打电话

.attr("y", function(d) { return y(d.name); })
排序后再次在.bar - 属性上

就足够了,就像我为条形图的初始位置设置属性时一样。

任何帮助非常感谢!

1 个答案:

答案 0 :(得分:2)

您在D3中要做的是对基础数据进行排序,然后再将其传递给.data()。像这样:

svg.selectAll(".bar")
   .data(dataset.sort(function(a, b) { return b.value - a.value; }))

其余代码可以保持不变。我添加了一个过渡,使它看起来更好。完整示例here