在highcharts样条图表中创建多个系列?

时间:2013-01-24 10:25:21

标签: javascript csv highcharts time-series spline

我使用Highcharts库制作了样条图表,其中包含从两个不同的CSV文件加载的两个数据系列,并且工作正常。现在我需要另一个样条图表,但有54个数据系列。

我使用PHP创建了54个CSV文件,然后我生成图表的Javascript代码是:

<script type="text/javascript">
$(function () {
    var chart;
    $(document).ready(function() {
        var options = {
            chart: {
                renderTo: 'chart_day',
                type: 'spline'
            },
            title: {
                text: 'Andamento giornaliero temperatura.'
            },
            xAxis: {
                type: 'datetime',
                second: '%H:%M:%S'
            },
            yAxis: {
                title: {
                    text: 'Temperatura (°C)'
                },
            },
            tooltip: {
                formatter: function() {
                    return '<b>'+ this.series.name +'</b><br/>'+
                    Highcharts.dateFormat('%H:%M:%S', this.x) +': '+ this.y +' °C';
                }
            },
            series: [ <?php for($i=0;$i<52;$i++)
                echo "{ name: \"Sensor".($i+1)."\", data: []},";
                echo "{ name: \"Sensor".($i+1)."\", data: []}";
            ?>]
        };

        for( i=1; i<=54; i++){
            if(i!=5){
                $.get('file/file'+i+'.txt', function(data) {
                    // Split the lines
                    var lines = data.split('\n');

                    // Iterate over the lines and add categories or series
                    $.each(lines, function(lineNo,line) {
                        if (line != "") {
                            var items = line.split(',');
                            var timeElements = items[0].split(':');
                            var date = Date.UTC(2004, 2, 1, timeElements[0], timeElements[1], timeElements[2], 0);
                            options.series[i-1].data.push([date,parseFloat(items[1])]); 
                        }
                    });
                    if(i==54)
                    chart = new Highcharts.Chart(options);
                });
            }
        }
    });
});
</script>

JS consolle中存在错误:

  

“未捕获的TypeError:无法读取未定义的属性'数据'”

1 个答案:

答案 0 :(得分:0)

好像你的系列初始化被打破了。试试这个

var series  = [];
for(i=0;i<52;i++)
{
   series.push({name: ('Sensor' + (i + 1)), data: []});
}

并在您的选项中设置此系列对象:

var options = {
            ..
            series: series
        };