【问题标题】:Using D3.nest() to create an array of objects by column header使用 D3.nest() 按列标题创建对象数组
【发布时间】:2014-03-12 19:16:18
【问题描述】:

我有一个 CSV 文件,格式为:

时间,group1,group2,group3
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 访问器函数中设置数据结构。 (如果我用词不当,我深表歉意)

【问题讨论】:

    标签: javascript arrays csv d3.js


    【解决方案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']})
    });
    

    这不是最灵活的示例(因为列是硬编码的),但希望它能让您了解如何去做。

    【讨论】:

      猜你喜欢
      • 2020-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-09
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多