我是 D3 的新手,负责创建一个用于显示油井数据的仪表板。数据位于 3 个 csv 文件中,具有以下标题。
公司数据: 公司名称、设施名称、井名、WellId、WellGasNRI、WellOilNRI、WellShrinkageFactor、WellYieldFactor
预算预估: WellId、月、年、月内天数、GrossOil、GrossGas、GrossBOE、NetBOE
实际油井产量: 井号、日期、总油、总气、净油、净气、带收缩的气体、带产量的气体
我已经使用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/