2013-03-14 39 views
9

我有多個系列的Highcharts和每個系列的「選擇」。我的目標是通過'選擇'來改變系列類型。動態更改Highcharts數據系列類型

$('#ChType').change(function() { 
    var series = chart.series[0] 
    var newType = $('#ChType').val(); 
    changeType(series, newType); 
}) 

$('#ChType2').change(function() { 
    var series = chart.series[1] 
    var newType = $('#ChType2').val(); 
    changeType(series, newType); 
}) 

function changeType(series, newType) { 
    var dataArray = [], 
     points = series.data; 
    series.chart.addSeries({ 
     type: newType, 
     name: series.name, 
     color: series.color, 
     data: series.options.data 
    }, false); 
    alert(series.name); 
    series.remove(); 
} 

我知道每次改變類型時,系列都會從數組中的當前位置移除並添加到最後。目前,我只能更改位置系列[0]中的系列。

如何更改任何其他系列而不僅僅是系列[0]?

我看過類似的問題here,但無法完成它的工作。

我的示例代碼jsFiddle

回答

16

可以使用V3.0 highcharts包括series.update()方法,它允許改變圖表的類型,動態地。

http://jsfiddle.net/8Sg8K/1

chart.series[0].update({ 
       type: "column" 
      }); 
+0

它被添加在頭部,http://www.highcharts.com/component/content/article/2-news/53-highcharts-3-0-beta-released –

+0

太棒了。謝謝塞巴斯蒂安! – JCab

+0

這應該是答案 – Keelan

0

爲什麼你不包括你在類似的問題中鏈接到的循環?

$('#ChType').change(function(){ 
    var series; 

    for (i = 0 ; i < chart.series.length ; i++) { 
      if (chart.series[i].name == 'MyData1') { 
       series = chart.series[i]; 

      }     
     } 
       //var series = chart.series[0] 
       var newType = series.type == $('#ChType').val() ? $('#ChType').val() 

將在適當位置對於每種類型 - http://jsfiddle.net/waBck/5/

+0

感謝布雷克,這正是我需要的。 – agri

+1

。@Sebastian Bochan的回答是更好的選擇。 – Oliver