在d3.v4中排序嵌套数据

时间:2017-01-21 19:44:31

标签: javascript d3.js

目前正在学习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函数的情况下只有一个叶子。我觉得神秘的问题按照“答案”解决了。下面。感谢。

1 个答案:

答案 0 :(得分:0)

我希望能回答我自己的问题 - 但我一直在使用第一个答案:

d3.js sorting by rollup field

哪个不起作用。如果这对任何人都有帮助,只需将.values更改为.value:

            .sort(function(a,b) {return d3.descending(a.value,b.value);});

修复了问题,并对嵌套的累计数据进行了排序。感谢