如何在对包含数据的对象数组进行排序后,在d3中更新垂直条形图?
我的(肯定很小)问题最好在这里看到:http://jsfiddle.net/yJq3e/3/
创建条形图后,我调用sortBars()
函数,该函数工作正常(console.log
可以告诉我),直到我更新y属性。我假设它连接到y属性实际上依赖于索引(或键?)。但是,我会想到打电话
.attr("y", function(d) { return y(d.name); })
排序后再次在.bar
- 属性上就足够了,就像我为条形图的初始位置设置属性时一样。
任何帮助非常感谢!
答案 0 :(得分:2)
您在D3中要做的是对基础数据进行排序,然后再将其传递给.data()
。像这样:
svg.selectAll(".bar")
.data(dataset.sort(function(a, b) { return b.value - a.value; }))
其余代码可以保持不变。我添加了一个过渡,使它看起来更好。完整示例here。