我有一個帶有各種圖表的儀表板,每個圖表都有一個相鄰的下拉列表來更改圖表類型。我希望通過重繪圖表而不是破壞它並創建一個新圖表來實現這一點。在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