2013-03-14 17 views
9

複数の系列を持つハイチャートと各系列のための「選択」があります。私の目的は、 'select'を使ってシリーズタイプを変更することです。ハイチャートのデータ系列型を動的に変更する

$('#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

あなたはバージョン3.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

おかげでブレイク、それは私がまさに必要です。 @セバスチャンBochanの答えは – agri

+1

.updateが良い選択です。 – Oliver