2016-04-19 46 views
2

我正在使用高圖來製作具有多個系列(19)的圖表。我想每個系列有多個點,所以這樣做是爲了與第一組數據創建的第一個系列,然後就點添加到每個系列:無法獲得系列高圖

$(document).ready(function() { 
     chart = new Highcharts.Chart({ 
     chart: { 
      renderTo: 'container', 
      defaultSeriesType: 'line', 
      events: { 
      load: function() { 
       var rawArray = <%- dataArray %>; 
       var array = {}; 
       var chart = this; 
       for (var i = 0; i < rawArray.length; i++) { 
       var entry = rawArray[i]; 
       var str = entry.timestamp.toString(); 
       var time = str.slice(0, -3); 
       var array = [ 
        [parseInt(time), entry.price] 
       ]; 
       if (i < 18) { 
        $('#container').highcharts().addSeries({ 
        name: entry.name, 
        id: entry.id, 
        data: array 
        }); 
       } else { 
        $('#container').highcharts().series[entry.id].addPoint(array, false, true); 
       } 
       } 
      } 
      } 
     }, 
     title: { 
      text: 'Title' 
     }, 
     xAxis: { 
      type: 'datetime', 
      tickPixelInterval: 150 
     }, 
     yAxis: { 
      minPadding: 0.2, 
      maxPadding: 0.2, 
      title: { 
      text: 'Value', 
      margin: 80 
      } 
     } 
     }); 
    }); 

所以第一個19系列再添得很好,但再有就是這個消息在我的控制檯:'未捕獲TypeError:無法讀取屬性'addPoint'的undefined'遭受$('#container').highcharts().series[entry.id].addPoint(array, false, true);

我想知道如果你們有我的解決方案,它會非常感激!

+0

你好,你可以做一個jsFiddle的例子? – Cuchu

+0

您應該使用[get()](http://api.highcharts.com/highcharts#Chart.get)函數來代替構建$('#container').hawcharts()。series [entry.id]。 –

+0

@Cuchu當然!這裏是jsFiddle:https://jsfiddle.net/99x477sb/4/ – Hiro

回答

2

嘗試https://jsfiddle.net/Cuchu/99x477sb/5/

for (var i = 0; i < rawArray.length; i++) { 
      var entry = rawArray[i]; 
      var id = entry.id; 
      var str = entry.timestamp.toString(); 
      var time = str.slice(0, -3); 
      var array = [[parseInt(time), entry.price]]; 
      var array_to_point = [parseInt(time), entry.price]; 
      console.log(array); 
      if (i < 18) { 
       $('#container').highcharts().addSeries({ 
       name: entry.name, 
       id: entry.id, 
       data: array 
       }); 
      } else { 
      $.each(this.series, function(i, v){ 
       serieId = chart.series[i].options.id; 
       if(serieId == id) { 
       chart.series[i].addPoint(array_to_point,false); 
       } 

       //chart.series[i].addPoint(series[serieId], false); 
       }); 
      //console.log(this.series); 
      //$('#container').highcharts().series[id].addPoint(array, false, true); 
       //$('#container').highcharts().get(entry.name).addPoint(array, false, true); 

      } 
      } 
      this.redraw(true); 

我的英語更基本的,但我試圖闡明。 當你設置id:entry.id時,id到serie是在chart.series [i] .options.id中定義的,我不是id,因爲它是系列圖中的索引。

var array = [[parseInt(time), entry.price]]; 
var array_to_point = [parseInt(time), entry.price]; 

in first run array定義數據serie = array(points)where points = array(time,value)..好嗎?那麼在addpoint,修改添加點數據arra_to_point = [時間價值] ...

在結束時,重繪圖形..

我已經做了與Highcharts許多就業機會,總是要在看元素內容採取脈衝

+0

是好的做法,創建圖形和系列爲空,然後在將所有點添加到系列時創建函數。 – Cuchu

+0

嘗試並發表評論! @Hiro – Cuchu

+1

它的作品很好!非常感謝! – Hiro