我有一个带有各种图表的仪表板,每个图表都有一个相邻的下拉列表来更改图表类型。我希望通过重绘图表而不是破坏它并创建一个新图表来实现这一点。在Highcharts中更改图表类型并使用多个系列重绘
我第一次偶然发现了一个似乎来自Highcharts团队的解决方案,但在调查中,它似乎实际上被打破了。从选择中选择“列”后,图表将重新渲染而不显示第一个系列数据。我发现这是一个一致的问题... highcharts只想渲染最后一个系列,他们使用的是“addSeries”方法的方式:
for(var i=0;i<series.length;i++)
{
serie = series[0];
serie.chart.addSeries({
type: newType,
name: serie.name,
color: serie.color,
data: serie.options.data
}, false);
serie.remove();
}
var chart = new Highcharts.Chart(options, function(chart){
$('#chartType').change(function(){
changeType(chart.series, this.value);
});
});
尝试选择“列”在这里选择:http://jsfiddle.net/2hLr5/
我还发现有人用highcharts和jQuery 1.7.1的旧版本完成了这个工作。你可以在这里看到他的工作示例:http://highcharts.com/jsbin/etulob/edit#javascript,live
在为我的用途复制他的代码时,我发现jQuery 1.9.1会将图表从其原始列复制到折线图中,但它试图从线条图到列。你可以在这里看到这个:http://highcharts.com/jsbin/etulob/9/edit#javascript,live
我最好的猜测是柱状图的数据已经改变,因为以前的版本的Highcharts,但这是在黑暗中总刺伤。
任何帮助将非常感激。
在Highcharts 3.0中,我们实现了'series.update(object)'函数,它允许轻松更改系列选项(包括类型)。请参阅文档示例:http://api.highcharts.com/highcharts#Series – 2013-04-09 09:49:44