2016-11-07 8 views
0

累積グラフを非累積グラフに変換したいと思います。基本的に私はあなたを表示するデモを持っている:ハイチャートを使用して累積グラフを非累計に変換します

これは累積グラフである: http://jsfiddle.net/h1qq1rj8/

そして、これが非累積グラフである:私はに変換するデータを、累積している http://jsfiddle.net/h1qq1rj8/2/

$(function() { 
    Highcharts.chart('container', { 
     chart: { 
      type: 'column' 
     },  
     title: { 
      text: 'Total fruit consumtion, grouped by gender' 
     },  
     xAxis: { 
      categories: ['Apples', 'Oranges', 'Pears', 'Grapes', 'Bananas'] 
     },  
     yAxis: { 
      allowDecimals: false, 
      min: 0, 
      title: { 
       text: 'Number of fruits' 
      } 
     },  
     tooltip: { 
      formatter: function() { 
       return '<b>' + this.x + '</b><br/>' + 
        this.series.name + ': ' + this.y + '<br/>' + 
        'Total: ' + this.point.stackTotal; 
      } 
     },  
     plotOptions: { 
      column: { 
       stacking: 'normal' 
      } 
     },  
     series: [{ 
      name: 'John', 
      data: [1, 8, 12, 13, 23], // I need to convert this data to non-cumulative 
      stack: 'male' 
     }] 
    }); 
}); 

非累積バックエンドのデータを減算していますが、パフォーマンスが低下しているため、ハイチャートのAPI自体に累積的なグラフを作成するオプションはありませんか?

編集:

私は、データを異なる方法でフォーマットされた1つの以上のグラフを持っている: http://jsfiddle.net/h1qq1rj8/3/

+1

3番目の要素は5(12-8)または4(12-8-1)でなければなりません。 – Dekel

+0

それは4であるべきです、それを指摘してくれてありがとう、私は固定情報で質問を編集しました。 – user1735921

答えて

1

チャートを描画する前に、あなたのデータの計算を行うことはありませんHighchartsが、あなたは、この計算を移動することができますサーバー側からクライアント側に固有の部分です。

old_ar = [[0,1],[1,8],[2,12],[3,13],[4,23]] 
 
new_ar = old_ar.reduce(function(a, b, c, d) { if (a.length) {a.push([d[c][0], d[c][1]-d[c-1][1]])} else {a = [b]} return a;}, []) 
 
console.log(new_ar)
:あなたはこれを使用することができ、データの2番目のスタイルのために

old_ar = [1, 8, 12, 13, 23] 
 
new_ar = old_ar.reduce(function(a, b, c, d) { if (a.length) {a.push(d[c]-d[c-1])} else {a = [b]} return a;}, []) 
 
console.log(new_ar)

あなたは望ましい結果を得るために、アレイ上reduce機能を使用することができます

+0

こんにちは、ありがとう、トリックでした!しかし、データがそれほどフォーマットされていないもう一つのグラフがあります。それは次のようなものです:http://jsfiddle.net/h1qq1rj8/3/ – user1735921

+0

ですから、基本的に質問しますが、何か別の意味ですか? :)(それにも 'reduce'関数を使うことができます...ちょっと書いてください) – Dekel

+0

は2番目のスタイルを追加しました – Dekel