我希望按年度排序我的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
答案 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
答案 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;
});