D3.js连接来自多个csv文件的数据

时间:2016-06-24 20:11:17

标签: javascript csv d3.js

我是D3的新手,他的任务是创建一个显示油井数据的仪表板。数据在3个csv文件中,标题如下。

  1. 公司资料: 公司名称,FacilityName,WellName,WellId,WellGasNRI,WellOilNRI,WellShrinkageFactor,WellYieldFactor

  2. 预算预算: WellId,月,年,DaysInMonth,GrossOil,GrossGas,GrossBOE,NetBOE

  3. 实际油井产量: WellId,日期,GrossOil,GrossGas,NetOil,NetGas,GasWithShrinkage,GasWithYield

  4. 我使用d3.nest()对每个文件中的记录进行分组,但希望将分组的数组合并为一个结构。

    其中一个主要显示是按预算比较每个井的预算估算与实际生产量。

    非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

执行此操作的一种方法是嵌套多个d3.csv来电,如下所述:Importing data from multiple csv files in D3

d3.csv("file1.csv", function(data1) {
  d3.csv("file2.csv", function(data2) {
     d3.csv("file3.csv", function(data3) {
        // do something with the data
        console.log("CSV1", data1);
        console.log("CSV2", data2);
        console.log("CSV3", data3);
     });
  });
});

另一个选项(我更喜欢)是使用d3.queue(这是一个插件 - 您需要单独导入queue.js):

queue()
    .defer(d3.csv, 'file1.csv')
    .defer(d3.csv, 'file2.csv')
    .defer(d3.csv, 'file3.csv')
    .await(processData);

function processData(data1, data2, data3) {
    // do something with the data
    console.log("CSV1", data1);
    console.log("CSV2", data2);
    console.log("CSV3", data3);
}

从那里,您可以使用d3和JavaScript数组操作函数来组合,合并,拆分以及对数据对象执行任何操作。例如,您可能希望使用d3.nest().key()来组织CSV,以便可以使用WellId字段选择它们,然后使用嵌套for循环或其他一些机制将它们组合在一起。以下是D3中有关数据操作的一些很好的教程和参考资料: