Highcharts - 将数据从一个图表重写为另一个图表

时间:2013-06-07 10:17:43

标签: javascript highcharts highstock

在我的示例中,数据是随机生成的。单击按钮后,应更改缩放类型。

$(function() {

var chartOptions={  
        chart:{
            zoomType : 'x',
            events : {
                load : function() {
                var series = this.series[0];
                    var chart = this;
                    setInterval(function() {
                        var x = (new Date()).getTime(),
                        y = Math.round(Math.random() * 100);
                        series.addPoint([x, y]);
                        chart.redraw();
                    }, 1000);
                }
            }
        },
        series : [{
            name : 'AAPL',
            data : [null]
        }]
    };

$('#container').highcharts('StockChart', chartOptions); 

$('#button').click(function() {
    var chart1 = $('#container').highcharts();
    //alert(chart1.series[0].yData);
    chartOptions.chart.zoomType = 'y';
    $('#container').highcharts(chartOptions);
});
});

单击按钮后,旧图表将消失,但不会生成新图表。 Firebug显示TypeError: e is undefinedseries.addPoint([x, y]);行显示series is undefined

chartOptions是全局的,所以在click处理程序中,一个属性(zoomType)被更改,其余属性应该相同。

alert(chart1.series[0].yData);显示了合理的数据。所以我试过了:

$('#button').click(function() {
    var chart1 = $('#container').highcharts();
    //alert(chart1.series[0].yData);
    chartOptions.chart.zoomType = 'y';
    var chart2 = $('#container').highcharts(chartOptions);
    chart2.series[0].setData(chart1.series[0].data);
    chart2.redraw();
});

然后萤火虫显示chart2.series is undefined

1 个答案:

答案 0 :(得分:0)

如果没有destroy()图表并创建新实例,则无法更新highcharts中的缩放类型。换句话说,你应该使用

chart1.destroy()

var chart2 = $('#container')。highcharts(chartOptions);

如果您想在任何轴上设置范围(缩放图表),您可以使用setExtremes()函数http://api.highcharts.com/highstock#Axis.setExtremes()

chartOptions或chart2.series未定时,你需要使用$ .extend({},chartoptions)

$('#container').highcharts($.extend({},chartoptions);