D3.js 合并来自多个 csv 文件的数据
2016-06-24
2887
我是 D3 新手,负责创建一个用于显示油井数据的仪表板。数据位于 3 个 csv 文件中,标题如下。
-
公司数据: CompanyName、FacilityName、WellName、WellId、WellGasNRI、WellOilNRI、WellShrinkageFactor、WellYieldFactor
-
油井预算估算: WellId、Month、Year、DaysInMonth、GrossOil、GrossGas、GrossBOE、NetBOE
-
实际油井产量: WellId、Date、GrossOil、GrossGas、NetOil、NetGas、GasWithShrinkage、GasWithYield
我曾使用
d3.nest()
对每个文件中的记录进行分组,但我想将分组后的数组合并为一个结构。
主要显示内容之一是将预算估算与每口井每天的实际产量进行比较,然后再按设施进行比较。
如能得到任何帮助,我们将不胜感激。
1个回答
一种方法是嵌套多个
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 中数据操作的一些很好的教程和参考资料:
helderdarocha
2016-06-24