Highcharts - 动态+多个图表无法渲染

时间:2016-09-30 16:49:59

标签: highcharts

我想在同一页面上绘制多个高级图表,其中包含从服务器发送的动态数据 我创建了多个图表,动态地向他们提供数据,但只有最后一个图表被渲染,所有其他图表都是空白的 我检查了图表对象,数据添加但未绘制

此外,我扩展了'#34;加载随机数据"对于3个图表,我遇到了同样的问题 以下是我的代码:

var create = function(id){
document.body.innerHTML += "<div id='c"+id.toString()+"'></div>";
$('#c'+id.toString()).highcharts({
        chart: {
            type: 'spline',
            animation: Highcharts.svg, // don't animate in old IE
            marginRight: 10,
        },
        title: {
            text: 'Live random data'
        },
        xAxis: {
            type: 'datetime',
            tickPixelInterval: 150
        },
        yAxis: {
            title: {
                text: 'Value'
            },
            plotLines: [{
                value: 0,
                width: 1,
                color: '#808080'
            }]
        },
        tooltip: {
            formatter: function () {
                return '<b>' + this.series.name + '</b><br/>' +
                    Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', this.x) + '<br/>' +
                    Highcharts.numberFormat(this.y, 2);
            }
        },
        legend: {
            enabled: false
        },
        exporting: {
            enabled: false
        },
        series: [{
            name: 'Random data',
            data: (function () {
                // generate an array of random data
                var data = [],
                    time = (new Date()).getTime(),
                    i;

                for (i = 1; i <= 0; i += 1) {
                    data.push({
                        x: time + i * 1000,
                        y: Math.random()
                    });
                }
                return data;
            }())
        }]
    });
}

function init(){
    create(1);
    create(2);
    create(3);
    setInterval(function(){
        for(var i=1;i<Highcharts.charts.length;i++){
            var chart = Highcharts.charts[i];
            var series = chart.series[0];
            var x = (new Date()).getTime(),
                y = Math.random();
            series.addPoint([x,y], true);
        }
    },1000);
}

以下是jsFiddle

上的相同代码

1 个答案:

答案 0 :(得分:1)

将新div添加到文档正文的方式无法正常工作。你可以(因为你正在加载jQuery)使用jQuery的append()

$(document.body).append("<div id='c"+id.toString()+"'></div>");

演示:https://jsfiddle.net/m9k4eb42/1/