将新的系列[0]数据添加到现有的高位图表中


Add new series[0].data into already existing highchart

我的图表是作为对象在后端创建的,并像"{{chart(myChart)}}"一样被推到树枝上。但我需要动态更新其中的数据。所以我创建了新的图表,并通过ajax只将chart->series[0]推送到。

我尝试过update()和setData()方法,但没有成功,我看到"没有数据显示"。奇怪的是,如果我加载相同的对象,数据就会显示出来。

var dchart = $("#myChart").highcharts();
        console.log(dchart);
        var dp = $('body').find(".date-picker");
        dp.datepicker();
        dp.on('changeDate', function(e)
        {
            console.log(e.format('yyyy-m-d'));
            $.ajax({
                url: 'path',
                type: 'POST',
                data: { date: e.format('yyyy-m-d') }
            }).done(function(msg){
                dchart.series[0].setData(msg[0].data);}

我认为您需要像这样重写代码:

dchart.series[0].update({
    data: msg[0].data
}, true);

使用

chart.addSeries();

这是一个Fiddle

我认为你应该通知$.ajax(),数据是JSON格式的,否则你会得到字符串。或者将字符串解析为JSON:

dchart.series[0].setData(JSON.parse(msg[0].data));

我发现问题出在xAxis中。

时间戳中加载的数据超出了初始图表中设置的时间范围。这就是为什么它显示No data to display

解决方案是更新xAxis:

dchart.xAxis[0].setExtremes(min, max);