【发布时间】:2015-10-06 20:32:31
【问题描述】:
我想按年份而不是按值对我的 d3 sunburst 的外环进行排序,所以它是按时间顺序排列的。这是我的代码:
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的第7章。相关GitHub
更新了我的plunker
【问题讨论】:
-
也发布一些示例 csv 数据。
-
我添加了一个我的csv文件的样本,真实的超过8000行。
标签: javascript csv d3.js sunburst-diagram