0

我正在使用 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

我想制作一个小部件以在我的图表上生成具有任意数量行的图表(而不是如图所示的硬编码两条线)。

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

4

1 回答 1

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

于 2013-06-19T16:22:32.697 回答