D3操纵和过滤csv数据

时间:2014-05-05 15:03:19

标签: csv d3.js

我试图解析csv文件以用于折线图。 csv文件的组织如下:

----------


Row 1 (headings): Series, Year, Economy X, Economy Y, Economy Z....
Row 2 (value rows): Indicator 1, 2012,  38, 73.2, 28
Row 3 (value rows): Indicator 1, 2013,  41, 74.2, 24
Row 4 (value rows): Indicator 2, 2012,  38, 73.2, 28
Row 5 (value rows): Indicator 2, 2013,  41, 74.2, 24
 ....

----------

我正试图创造经济'对象'每个包含一个由“年”组成的对象。 (编码为'标签'),'系列' (编码为'系列'),以及相应的值(编码为'值')。

按照例子 delimited.io我设法制作了这些物品(见下面的2个例子)。

[Object, Object, Object, Object, Object, Object]
0: Object
name: "Switzerland"
values: Array[20]
0: Object
label: "2005"
name: "Switzerland"
series: "Indicator 1"
value: 2.96
__proto__: Object
1: Object
label: "2006"
name: "Switzerland"
series: "Indicator 1"
value: 3.297018849

问题在于我只想为csv文件中的一个指标创建对象,因为只绘制该指标的数据。因此,我需要过滤掉所有指标,但需要我想要的指标(例如"指标1和#34;)。

目前的代码如下:

d3.csv("data/sample data.csv", function (error, data) {
    var whichSeries='Indicator 1';
    var xAxis = 'Year';
    var series='Series';
    var economies = d3.keys(data[0])
        .filter(function (key) { 
             return key !== xAxis && key !==series});
    console.log("economies",economies);

    var seriesData = economies.map(function (name) {

      return {
        name: name,
        values: data.map(function (d) {
            return {name: name, label: d[xAxis], series: d[series], value: +d[name]};
            }
        })
      };
    });

如何仅为'指标1'?

构建seriesData

非常感谢!!

特里

0 个答案:

没有答案