如何从txt文件中使用tsv或csv将数据从d3.js中获取到数组?

时间:2014-03-27 14:11:10

标签: javascript arrays csv d3.js tsv

我使用它来解析csv文件并创建d3 docs中指定的数组数据:

d3.tsv("classes_h.txt", function(data) { 
    data.forEach(function(d) { 
        console.log(data[0]);
        console.log("lol");
    });
    console.log(data[0]);
});

d3.tsv("classes_h.txt", function(data) { 
    console.log(data[0]);
});

然而,当我调用数据[0]时,我在控制台中未定义。我也试过写出"数据而不是"数据[0]"这导致我得到一个空数组 - > []:

我的txt文件如下所示: http://puu.sh/7LrRm.png

所有内容都与选项卡分开,所以我正在使用tsv,如果我已正确理解,是否使用tsv或csv取决于数据的格式?

提前致谢。

3 个答案:

答案 0 :(得分:2)

解决

TSV不只是将制表符分隔元素放入数组中。你的格式如下:

Group1 Group2 Group3
data1  data1  data1
data2  data2  data2
data3  data3  data3

然后您可以打印并验证数据已加载:

data.forEach(function(d) { 
    console.log(d);
});

当打印出整个数据时,D3将创建一个对象,每个对象都有一个绑定了所有数据的组。这是我的例子的输出:

Object {Group1: "data1", Group2: "data1", Group3: "data1"}
Object {Group1: "data2", Group2: "data2", Group3: "data2"}
Object {Group1: "data3", Group2: "data3", Group3: "data3"}

这些对象等同于data [0],data [1]和data [2],它们离开group1,group2和group3。

答案 1 :(得分:0)

这是localy托管的吗?如果是,您是使用file://协议加载页面,还是通过http(例如http://localhost:8080)提供的。

如果它正在使用file://,那么您将遇到问题,因为浏览器不允许使用XMLHttpRequest d3.tsv()用于获取文件的d3.tsv("file.tsv", function(error, data){ if(error){ return console.log(error); } // there was no error }); 加载文件。

或者按照Lars的建议并检查错误

{{1}}

答案 2 :(得分:0)

将数据[0]更改为d。要显示的数据标题应该有效。

d3.tsv("classes_h.txt", function(data) { 
data.forEach(function(d) { 
    console.log(d.*displaydata*);
    console.log("lol");
});