2013-04-08 16 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()函數更改圖的類型。

相關問題