目前正在学习d3(也是JavaScript的新手),并且在使用嵌套数据进行排序时遇到了一些麻烦。值。这是我的代码片段:
d3.csv("flat_data.csv", function (data) {
var nested_data = d3.nest()
.key(function(d) { return d.Field1; })
.rollup(function(g) {
return d3.sum(g, function(v) {return v.Field2; });
})
.entries(data)
.sort(function(a,b) {return d3.descending(a.values,b.values);});
console.log(nested_data);
尽我所能,nested_data顽固地未分类(没有抛出特定错误)。我希望数组条目(数据)按汇总函数计算的值排序(这是正确的)。看了几个关于SO的问题,他们至少推荐了上面的语法。我显然遗漏了一些东西 - 有人可以帮忙吗?谢谢!
编辑:
那么在咨询API参考时,排序方法可能是旧的吗?看起来有一个nest.sortValues(比较器)方法,如果我可以为我的代码找出正确的语法,我会在这里发布,因为没有立即工作,但也许可以找到正确的方法来使用它(请随时告诉我!)再次感谢
EDIT2:
完全被这个骗了!试图在http://bl.ocks.org/phoebebright/raw/3176159/中使用语法等等都无济于事。如果有人知道如何让它发挥作用,那就太棒了!感谢
EDIT3:
sortValues在这种情况下是不合适的,因为它对叶子进行排序,在rolledup函数的情况下只有一个叶子。我觉得神秘的问题按照“答案”解决了。下面。感谢。
答案 0 :(得分:0)
我希望能回答我自己的问题 - 但我一直在使用第一个答案:
哪个不起作用。如果这对任何人都有帮助,只需将.values更改为.value:
.sort(function(a,b) {return d3.descending(a.value,b.value);});
修复了问题,并对嵌套的累计数据进行了排序。感谢