我有一个格式为
的CSV文件时间,组1,组2,组3
0,45,30,30,
1,30,25,31,
2,50,45,30,
我想将它构造为一个对象数组,以便:
[{group1:array[3]}, {group2:array[3]},...]
其中每个array[3]
本身就是一对配对的对象
时间列中的值,其值在相应的组列中
即:
group1 [{time:0, value:45},{time:1, value:30},...]
group2 [{time:0, value:30},...]
D3.csv按行解析,我不知道如何使用d3.nest迭代生成的对象数组,或者是否有办法在d3.csv访问器函数中设置数据结构。 (如果我使用不正确的条款,我道歉)
答案 0 :(得分:1)
您不必使用d3.nest()
来执行此操作。您可以循环解析的csv文件,以便以您需要的格式存储数据。例如:
var csv = "time,group1,group2,group3\n0,45,30,30\n1,30,25,31\n2,50,45,30";
var data = d3.csv.parse(csv);
var result = [ {group1: []}, {group2: []}, {group3: []}]
data.forEach(function(d) {
result[0]['group1'].push({time: +d.time, value: +d['group1']})
result[1]['group2'].push({time: +d.time, value: +d['group2']})
result[2]['group3'].push({time: +d.time, value: +d['group3']})
});
这不是最灵活的例子(因为列是硬编码的),但希望它会让你知道如何去做。