0

我想加载 x csv 文件并将数据呈现为折线图。加载 1 个 csv 文件并创建折线图已经很好了。

我的 csv 文件:

Date,PV,Energy
1355100420,0.000,0.851
1355100480,0.000,0.841
1355100540,0.000,1.000
1355100600,0.000,0.984
1355100660,0.000,1.006
1355100720,0.000,2.769
1355100780,0.000,2.791

我的问题:csv 文件的数量多种多样,正确的顺序很重要,因为 x 轴是我的时间轴,我的 csv 的第一列中有日期/时间。

读取单个 csv:

$.get(csv_file, function(data) {
    var series = [];
    // Split lines
    var lines = data.toString().split('\n');
    // For each line, split the record into seperate attributes
    $.each(lines, function(lineNo, line) {
        var items = line.split(',');
        // first line contains the series names
        if (lineNo === 0) {
            for (var i = 1; i < items.length; i++) {
                series.push({
                    name : items[i],
                    data : [],
                    dataGrouping : {
                        enabled : false
                    }
                });
            }
        } else {
            for (var i = 1; i < items.length; i++) {
                // get the serie
                var serie = series[i - 1];
                serie.data.push([parseFloat(items[0] * 1000), parseFloat(items[i])]);
            }
        }
    });
    chart = new Highcharts.StockChart({
        chart : {
            renderTo : container_id,
            type : 'line',
            reflow : true,
        },
        xAxis : {
            type : 'datetime'
        },
        series : series
    });
});

但是我怎样才能以正确的顺序读取多个 csv 文件呢?

非常感谢!

4

2 回答 2

0

她可以找到如何加载多个文件的示例:http ://www.highcharts.com/stock/demo/compare

不同之处在于,您需要首先解析该值(就像您在第一篇文章中所做的那样),然后将它们推送到一个数组中。下一步就是简单地对该数组进行排序(简单data.sort(function(a,b){ return a[0] - b[0]; })就足够了)并将排序后的数据放入series.data

于 2013-04-11T15:41:44.493 回答
0

您可以使用一些 get() 函数并以正确的顺序推送数据。

使用 2 个数据 csv 的示例。

JS

var options = {
    chart: {
        renderTo: 'container',
        zoomType: 'xy',
    },
    title: {
        text: ''
    },
    series: []
};
$.get('data1.csv', function (data) {
    // Split the lines
    options.series.push({
        name: 'aaa',
        data: []
    });

    var lines = data.split('\n');
    $.each(lines, function (lineNo, line) {
        var items = line.split(',');
        options.series[0].data.push([
        parseFloat(items[0]),
        parseFloat(items[1])]);
    });
});

$.get('data2.csv', function (data) {
    // Split the lines
    options.series.push({
        data: []
    });
    var lines = data.split('\n');
    $.each(lines, function (lineNo, line) {
        var items = line.split(',');
        options.series[1].data.push([
        parseFloat(items[0]),
        parseFloat(items[1])]);
    });
    var chart = new Highcharts.Chart(options);
});

CSV1

    16.40803,22.670
16.40772,20.840
16.40740,20.327
16.40709,21.532
16.40678,24.302
16.40646,26.108

CSV2

    16.43353,  -19.142
16.43322 , -18.813
16.43290  ,-19.157
16.43259  ,-19.417
16.43228  ,-19.428
16.43196  ,-19.747
于 2013-04-10T11:26:57.740 回答