我是D3的新手,他的任务是创建一个显示油井数据的仪表板。数据在3个csv文件中,标题如下。
公司资料: 公司名称,FacilityName,WellName,WellId,WellGasNRI,WellOilNRI,WellShrinkageFactor,WellYieldFactor
预算预算: WellId,月,年,DaysInMonth,GrossOil,GrossGas,GrossBOE,NetBOE
实际油井产量: WellId,日期,GrossOil,GrossGas,NetOil,NetGas,GasWithShrinkage,GasWithYield
我使用d3.nest()
对每个文件中的记录进行分组,但希望将分组的数组合并为一个结构。
其中一个主要显示是按预算比较每个井的预算估算与实际生产量。
非常感谢任何帮助。
答案 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中有关数据操作的一些很好的教程和参考资料: