读取D3中没有标题行的csv / tsv

时间:2012-12-13 23:18:49

标签: javascript csv d3.js tsv

我的CSV数据类似于:

数据

1,1,10
1,2,50
1,3,5
etc...

我正在尝试阅读数据。但是,我的初始数据不包含标题行(如上所示),因此它将第一个数据行作为标题(1,1,10)。有没有办法解决。我想在读取数据后设置标题名称

的Javascript
d3.csv("data/testnh.csv", function(data) {
    console.log(data);
}

谢谢!

4 个答案:

答案 0 :(得分:49)

使用d3.text加载数据,然后d3.csvParseRows进行解析。例如:

d3.text("data/testnh.csv", function(text) {
  console.log(d3.csvParseRows(text));
});

您可能还想将列转换为数字,因为它们默认为字符串。假设他们是所有号码,你可以说:

d3.text("data/testnh.csv", function(text) {
  var data = d3.csvParseRows(text).map(function(row) {
    return row.map(function(value) {
      return +value;
    });
  });
  console.log(data);
});

答案 1 :(得分:10)

自2012年Bostock的回答以来,d3.csv.parseRows允许使用可选的访问者功能,这样可以更简洁地表达他的答案:

d3.text("data/testnh.csv", function(text) {
    var data = d3.csv.parseRows(text, function(d) {
        return d.map(Number);
    });
    // Now do something with data
});

答案 2 :(得分:1)

首先使用d3.text读入数据,然后添加自定义标题字符串,然后使用d3.csv.parse解析结果

d3.text("data/testnh.csv", function(r){
   var result = "x, y, z\n" + r;  //now you have the header
   var data = d3.csv.parse(result);
   //do your plotting with data
}

答案 3 :(得分:0)

尝试 d3.csvParse(文字)

d3.csv.parseRows似乎在现代d3版本中不起作用。