[英]sortKeys not working with d3.nest()
我想按年份而不是按值對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); })
更新了我的朋克
看來這可能是有問題的代碼。 我不確定如何更改它以獲取我所尋找的外圈按時間順序排列,但是如果我將d.value更改為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相關
更新了我的朋克
我認為這是因為Nan值首次獲得記錄。 如果您看到hierarchy
變量的控制台,則將看到第一個記錄的年份為Nan
。 在第一個記錄中進行教育之前,您需要刪除-並且這樣的“,”不會弄亂整個.csv文件。 您可以檢查此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
解決此問題:
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;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.