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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (134)

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

  1. 公司数据:CompanyName,FacilityName,WellName,WellId,WellGasNRI,WellOilNRI,WellShrinkageFactor,WellYieldFactor
  2. 预算估算:WellId,Month,Year,DaysInMonth,GrossOil,GrossGas,GrossBOE,NetBOE
  3. 实际油井产量:WellId,Date,GrossOil,GrossGas,NetOil,NetGas,GasWithShrinkage,GasWithYield

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

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

任何帮助将不胜感激。

提问于
用户回答回答于

一种方法是嵌套多个d3.csv调用,如下所述:从D3中的多个csv文件导入数据

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中数据操作的一些很好的教程和参考资料:

扫码关注云+社区

领取腾讯云代金券