2013-04-08 82 views
3

我有一个带有各种图表的仪表板,每个图表都有一个相邻的下拉列表来更改图表类型。我希望通过重绘图表而不是破坏它并创建一个新图表来实现这一点。在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,但这是在黑暗中总刺伤。

任何帮助将非常感激。

+0

在Highcharts 3.0中,我们实现了'series.update(object)'函数,它允许轻松更改系列选项(包括类型)。请参阅文档示例:http://api.highcharts.com/highcharts#Series – 2013-04-09 09:49:44

回答

0

查看我之前的回答here。它解释了如何使用series.update()函数更改图的类型。

相关问题