尝试D3.nest只是我的csv数据的一部分

时间:2016-05-20 19:12:41

标签: javascript d3.js

我有这个csv文本文件,我正在尝试创建一个数组,以便数组的每个名称都有一个对象(d.name),数组的值是人数和日期。 / p>

以下是我的数据,

  

系列名称日期人SMS12000003000000001 Joe 1990-01-01 200   SMS12000003000000001 Don 1990-02-01 252 SMS12000003000000001 John   1990-03-01 336 SMS12000003000000001 Bob 1990-04-01 112

我想要的只是我的新d3嵌套数组看起来像

对象      关键:名称 然后价值观是日期和人。

目前我的代码是,

var newarray= 
    d3.nest()
        .key(function(d) { return d.Name;})
        .entries(data);

console.log(newarray);

我也尝试使用函数(d)并返回d.people和d.date

2 个答案:

答案 0 :(得分:0)

你能给出你想要的输出的例子吗?

如果它类似于[{"key" : "John", "values" : 2, etc...}],则可以使用:

var data = d3.nest()
  .key(function(d) { return d.name; })
  .rollup(function(v) { return v.length; })
  .entries(data);

答案 1 :(得分:-1)

考虑到这个问题有多大年纪了,我想您已经解决了。但是,我将针对当前版本的D3(版本5)进行回答:

var data = [];
     d3.csv("mydata.csv", function(d) {
       data.push({
         name: d.Name,
         people: +d.People,
         date: d.Date
       });
     }).then(function(d) {
       var newarray = d3.nest()
                      .key(function(k)  { return k.name; })
                      .entries(data);
      console.log(newarray);
    });

D3v5使用ES6 Promise异步读取数据,因此d3.csv创建一个Promise并读取数据。我们建立删除数组列的数据数组。完成对d3.csv的承诺后(读取完成),then将执行包含嵌套代码的匿名函数。

注意:date: d.Date将其保留为字符串,调用new Date(d.Date)创建日期对象,如下所示:date: new Date(d.Date)