在我的示例中,数据是随机生成的。单击按钮后,应更改缩放类型。
$(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 undefined
,series.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
。
答案 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);