2013-03-14 12 views
9

Ich habe Highcharts mit mehreren Serien und 'Select' für jede Serie. Mein Ziel ist es, den Serientyp über 'Auswählen' zu ändern.Highcharts Datenreihentyp dynamisch ändern

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

Ich verstehe, dass jedes Mal, wenn die Art geändert wird, wird Serie Orte entfernt von ihm bis zum Ende in einem Array und hinzugefügt aktuelle Position ist. Momentan kann ich nur die Serie ändern, die sich in der Positionsreihe [0] befindet.

Wie kann ich andere Serien ändern und nicht nur die Serie [0]?

Ich sah die ähnliche Frage here, aber konnte es nicht ganz zur Arbeit bringen.

Mein Beispielcode in jsFiddle.

Antwort

16

Sie können v3.0 highcharts enthalten series.update() -Methode, die Art zu ändern Diagramm ermöglicht verwenden, dynamisch.

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

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

Es ist im Kopfbereich hinzugefügt, http://www.highcharts.com/component/content/article/2-news/53-highcharts-3-0-beta-released –

+0

Awesome. Danke Sebastian! – JCab

+0

Das sollte die Antwort sein – Keelan

0

Warum haben Sie die Schleife, die Sie in der ähnlichen Frage verknüpft haben, nicht eingeschlossen?

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

dass für jeden Typ anstelle Put - http://jsfiddle.net/waBck/5/

+0

Dank Blake, das ist genau das, was ich brauchte. – agri

+1

.update @Sebastian Bochans Antwort ist eine bessere Option. – Oliver

Verwandte Themen