d3.js折线图 - 需要加载任意数量的数据系列

时间:2013-06-19 15:01:53

标签: javascript plot d3.js

我正在使用D3.js折线图,我使用以下代码获取数据:

// Get the data
d3.tsv("data2.tsv", function(error, data) {
    data.forEach(function(d) {
        d.date = parseDate(d.date);
        d.close = +d.close; // 1st line of data
        d.open = +d.open; // 2sd line of data
    });

    ...

}

这是我在tsv中的数据文件:

date    close   open
1-May-12    58.13   34.12
30-Apr-12   53.98   45.56
27-Apr-12   67.00   67.89
26-Apr-12   89.70   78.54
25-Apr-12   99.00   89.23
24-Apr-12   130.28  99.23
23-Apr-12   166.70  101.34

我想创建一个小部件,在我的Graph上生成带有任意行数的图形(而不是硬编码的两条线,如图所示)。

如何在同一个foreach子句中处理任意数量的数据系列(参见代码)?

1 个答案:

答案 0 :(得分:0)

只处理数据并假设日期总是存在(否则,将用于x轴的是什么?):

d3.tsv("data2.tsv", function(error, data) {
    //create array of all the none date keys
    var keyArray = d3.keys(data[0]).filter(function(key){ return key != 'date'; });

    //iterate over every row from the tsv
    data.forEach(function(row) {
        //cast date as a datetime
        row.date = parseDate(row.date);

        //cast everything else as a number
        keyArray.forEach(function(key){ row[key] = +row[key]; });
    });

    ...

});

使用硬编码列名称绘制和着色几行:https://gist.github.com/mbostock/3884955