javascript - D3.js 连接多个 csv 文件中的数据

标签 javascript csv d3.js

我是 D3 的新手,负责创建一个用于显示油井数据的仪表板。数据位于 3 个 csv 文件中,具有以下标题。

  1. 公司数据: 公司名称、设施名称、井名、WellId、WellGasNRI、WellOilNRI、WellShrinkageFactor、WellYieldFactor

  2. 预算预估: WellId、月、年、月内天数、GrossOil、GrossGas、GrossBOE、NetBOE

  3. 实际油井产量: 井号、日期、总油、总气、净油、净气、带收缩的气体、带产量的气体

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

主要显示之一是将每口井的预算估算与实际产量进行比较,然后按设施进行比较。

任何帮助将不胜感激。

最佳答案

一种方法是嵌套多个 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 中数据操作的一些很好的教程和引用:

关于javascript - D3.js 连接多个 csv 文件中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38021370/

相关文章:

javascript - 将 div 中的内容连同带样式的组件导出到文本/html 文件

Python、CSV、根据内容跳行

javascript - 如何将(鼠标)事件添加到 SVG 的 XMLDocument

python - 属性错误: '_io.TextIOWrapper' object has no attribute 'next' ?

javascript - 类型错误 : undefined is not an object using d3. map

javascript - 使用 D3.js 制作旭日图

javascript - 如何根据对象的值从对象中省略 key 对?

javascript - 在javascript中减去不透明度

javascript - 如何通过js删除IndexedDB旧版本数据库?

ruby-on-rails - 将 .csv 文件导入 rails 麻烦