2016-04-19 12 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シリーズはうまく追加したが、その後があります:私はそれはそれは、データの最初のセットで最初のシリーズを作成してからちょうど各シリーズにポイントを追加しましたので、各シリーズは、複数のポイントを持つようにしたいですこのメッセージは私のコンソールに表示されます: 'Uncaught TypeError:プロパティを読み込めません' addbound 'undefined'に返信する$('#container').highcharts().series[entry.id].addPoint(array, false, true);

私には解決策があるかどうか知りたいのですが、本当にありがとうございます!

+0

こんにちはを取るための要素の内容は、あなたがjsFiddle例を作ることができますか?代わりに建設$( '#コンテナ')の – Cuchu

+0

。highcharts()。シリーズ[entry.id]あなたは[取得()](http://api.highcharts.com/highcharts#Chart.get)関数を使用する必要があります。 –

+0

@Cuchuもちろん!ここjsFiddleです:https://jsfiddle.net/99x477sb/4/ – Hiro

答えて

2

試し

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); 

https://jsfiddle.net/Cuchu/99x477sb/5/に私の英語は、より基本的なものですが、私は解明してみてください。 id:entry.idを設定すると、serieへのidはchart.series [i] .options.idに定義されます。これは、系列グラフのインデックスであるためです。最初のランアレイ内

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

はOK ..データセリエ=配列(点)点=配列(時間、値)を定義しますか?その後、データへの追加ポイントのために変更addpoint、中= [時間、値]をarra_to_point ..

仕上げで、グラフを再描画..

私はHighchartsで多くの仕事をして、常に見てする必要がありますしていますパルス

+0

グラフとシリーズを空にしてから、すべてのポイントをシリーズに追加すると関数を作成するのがよい方法です。 – Cuchu

+0

試してみては! @Hiro – Cuchu

+1

それはうまく動作します!ありがとう、たくさんの男! – Hiro

関連する問題