sortKeys不使用d3.nest()

时间:2015-10-06 20:32:31

标签: javascript csv d3.js sunburst-diagram

我希望按年度排序我的d3森伯斯特的外环,而不是按价值排序,所以它按时间顺序排列。这是我的代码:

    d3.csv("etds.csv", function(error, dataset) {
        var hierarchy = {
            key: "ETD",
            values: d3.nest()
                .key(function(d) { return d.college; })
                .key(function(d) { return d.dept; })
                .sortKeys(d3.ascending).key(function(d) { return +d.year; })          
                .rollup(function(leaves) {
                    return leaves.length;
                })
                .entries(dataset)
        };

" .sortKeys(d3.ascending)"被忽略了。外圈仍按值排列。

示例CSV:

college,dept,year,url
College of Education, Health & Human Development,Education.,2011
College of Letters & Science,Earth Sciences.,2010
College of Letters & Science,Microbiology & Immunology.,2004
College of Letters & Science,Ecology.,1984
College of Letters & Science,Chemistry & Biochemistry.,2008
College of Letters & Science,Mathematical Sciences.,2011
College of Agriculture,Land Resources & Environmental Sciences.,2009
College of Agriculture,Agricultural Economics & Economics.,1996
College of Letters & Science,English.,2007

更新: 试过这个:

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

更新了我的plunker

似乎这可能是违规代码。我不确定如何更改它以获得我在寻找外圈的时间按年份顺序排列,但是如果我将d.values更改为d.key,那么这些值都会被搞砸,请参阅内联评论。

        var partition = d3.layout.partition()
        .children(function(d) {
            return Array.isArray(d.values) ?
                d.values : null;
        })
        .value(function(d) {
            return d.values;  //d.key sorts by year in outer ring
        });

此代码来自jsDataV.is相关GitHub

的第7章

更新了我的plunker

2 个答案:

答案 0 :(得分:0)

我认为这是因为第一张唱片的年份纳米值。如果您看到hierarchy变量的控制台,您会看到第一条记录的年份为Nan。在第一条记录中进行教育之前,您需要删除 - 而且这样的“,”不会弄乱您的整个.csv文件。您可以查看this plnkr进行实时演示。

college,dept,year,url
College of Education, **Health & Human Development - Education**.,2011
College of Letters & Science,Earth Sciences.,2010
College of Letters & Science,Microbiology & Immunology.,2004
College of Letters & Science,Ecology.,1984
College of Letters & Science,Chemistry & Biochemistry.,2008
College of Letters & Science,Mathematical Sciences.,2011
College of Agriculture,Land Resources & Environmental Sciences.,2009
College of Agriculture,Agricultural Economics & Economics.,1996
College of Letters & Science,English.,2007

enter image description here

答案 1 :(得分:0)

解决了这个问题:

    var partition =d3.layout.partition()
        .children(function(d) {
            return Array.isArray(d.values) ?
                d.values : null;})
        .value(function(d) {
            return d.values;
        })

        .sort(function(d) {
            return;
        });

关键部分是:

            .sort(function(d) {
            return;
        });