d3.js按时间段分组

时间:2017-01-23 18:58:32

标签: javascript d3.js

我如何通过数十年的相同大小的时间跨度来嵌套数据。

从此

 [{key: "1432"}
 {key: "1436"}
 {key: "1557"}
 {key: "1559"}
 {key: "1834"}
 {key: "1836"}
 {key: "1839"}
 {key: "undefined"}]

到此

[{key: "1430-1439", values: Array}
{key: "1550-1559", values: Array}
{key: "1830-1839", values: Array}
{key: "undefined", values: Array}]

另外,如果动态计算时间跨度的大小会很好。

1 个答案:

答案 0 :(得分:0)

我通过循环遍历所有元素来解决问题,并像这里一样添加相应的十年。

for(i = 0; i < dataToDraw.length; i++) {
  if(dataToDraw[i].year != undefined) {
    var decadeStart = dataToDraw[i].year - dataToDraw[i].year % 10;
    dataToDraw[i].decade = decadeStart + "-" + (decadeStart + 9);
  }
}

之后我使用d3.nest在新的十年字段中嵌套数据。

nestedDecadeData = d3.nest()
.key(function(d) { return d.decade; })
.sortKeys(d3.ascending)
.entries(dataToDraw);