2013-04-02 27 views
0

我正在使用Highcharts在單個圖表上繪製多個系列。系列數據是從包含JSON格式數據的文件中讀取的。該文件將每隔幾秒更新一次新數據,並且我有一個重新讀取文件的功能。 這裏的文件中的數據:如何同時更新Highcharts中的多個系列

[{"name": "series1", "data": [[1,109],[2,313],[3,192]]},{"name": "series2", "data": [[1,111],[2,112],[3,777]]}] 

我已經得到的代碼是:

//Read JSON data from a file 
$(function() { 

    function getSeriesData(file) { 
     var data = null; 
     $.ajax({ 
     async: false, 
      cache: false, 
     url: file, 
      method: 'GET', 
      dataType: 'json', 
      success: function(datasets){ 
       data = datasets; 
      }, 
      error: function(error,text,http){ 
       alert("Error retrieving " + url + "."); 
      } 
     }); 

     return data; 
    } 

    var graphData = getSeriesData("seriesData.json"); 

    var graphOptions = { 
      chart: { 
      type: 'line', 
      renderTo: "container", 
     }, 
     series: graphData 
    }; 


    var graph = new Highcharts.Chart(graphOptions); 

    var updateInterval = 1000 * 5; // 5 seconds 

    function update() { 
     //Need to refresh series data here. 
        //Something like: 
      graph.series = getSeriesData("series.json"); 
      graph.redraw(); 
      setTimeout(update, updateInterval); 
    } 

    update();}); 

望着文檔似乎沒有要重新設置所有的系列數據的方法同時使用我的getSeriesData函數重新讀取文件。這裏和其他地方的大多數示例都有通過遍歷[]數組來設置單個系列的數據的方法。但那不是我想要的。也許我必須重做代碼才能這樣做,但是以爲我會先在這裏檢查,希望能有一種更簡單的方法!提前致謝。

回答

0

我看不到用一次調用完成所有系列的方法。我可以看到兩個選項。

如果系列的數量是固定的,你可以在它們之間迭代調用series.setData設置爲false重繪選項,然後調用重繪()。

如果系列的數量可能會發生變化,則必須迭代調用remove的chart.series,然後遍歷調用chart.addSeries的系列數組。

+0

謝謝史蒂夫。一系列的數字可能改變,因此第二個選項是什麼,我可能得去。可惜似乎無法在一次通話中刷新全部內容。 – AndyB

+0

當你JSON,你可以得到一系列對象的長度,那麼你將有反覆的NUMER。 –