从D3中的多个csv文件导入数据

Joh*_* M. 22 javascript csv arrays import d3.js

我是D3的新手,刚刚开始研究一个项目.我的问题是这个.我想从D3中的2个csv文件导入数据,以便将它们用于图形比较.我面临的问题是:

1.如何从多个csv文件导入数据.
2.我可以为每个csv使用一个数组,或者D3只使用一个全局数据数组吗?
3.有没有办法从csv文件中选择某个列进行导入?

这是一个例子,我想从单独数组中的每个文件导入"oldVer",然后使用2个数组来处理.这在D3中是可行的吗?

csv 1
次,oldVer,newVer,oldT,newT
1,180930,190394,24,59
2,198039,159094,26,45
3,152581,194032,22,61

csv 2
次,oldVer,newVer,oldT,newT
1,184950,180435,27,26
2,120590,129409,13,13
3,165222,182133,60,54

再次对这个愚蠢的问题感到抱歉,但我对此事的反馈很少.任何帮助将不胜感激.

Aba*_* F. 21

在d3版本5中,您可以使用Promise.all加载多个csv文件.例:

Promise.all([
    d3.csv("file1.csv"),
    d3.csv("file2.csv"),
]).then(function(files) {
    // files[0] will contain file1.csv
    // files[1] will contain file2.csv
}).catch(function(err) {
    // handle error here
})
Run Code Online (Sandbox Code Playgroud)

有关在d3 v5中加载csv的更多信息

更多信息 Promise.all()

  • 这需要被接受为答案。 (2认同)

Lar*_*off 13

你只需要打d3.csv几次电话:

d3.csv("csv1.csv", function(error1, data1) {
  d3.csv("csv2.csv", function(error2, data2) {
    // do something with the data
  });
});
Run Code Online (Sandbox Code Playgroud)

至于你的第三个问题,不,D3会解析一切.没有什么可以强迫你使用所有数据,所以如果你只对一列感兴趣,只需使用那里的数据.


Stu*_*ows 12

您可以使用d3 队列同时加载文件.一个例子;

d3.queue()
.defer(d3.csv, "file1.csv")
.defer(d3.csv, "file2.csv")
.await(function(error, file1, file2) {
    if (error) {
        console.error('Oh dear, something went wrong: ' + error);
    }
    else {
        doStuff(file1, file2);
    }
});
Run Code Online (Sandbox Code Playgroud)