2017-04-18 13 views
1

1つのカテゴリで4つの値を持つ縦棒グラフを使用しようとしています。グラフの初期レンダリングは正常に動作します。ただし、series [0] .setData()メソッドを使用してデータを更新すると、単一のカテゴリを更新するのではなく、4つのカテゴリが作成されます。ここでHighcharts欄のチャートで単一カテゴリのデータを更新する

は、私は私がここで間違ってやっているかを把握することができませんjsfiddle link

$(function() { 
    var chart; 
    $(document).ready(function() { 
    chart = Highcharts.chart('container', { 
     chart: { 
     type: 'column' 
     }, 
     title: { 
     text: 'Packet Summary Stats' 
     }, 
     subtitle: { 
     text: 'Source: ABC' 
     }, 
     xAxis: { 
     categories: [ 
      'Packet Summary' 
     ], 
     crosshair: true 
     }, 
     yAxis: { 
     min: 0, 
     title: { 
      text: 'Packet Count' 
     } 
     }, 
     tooltip: { 
     headerFormat: '<span style="font-size:10px">{point.key}</span><table>', 
     pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' + '<td style="padding:0"><b>{point.y}</b></td></tr>', 
     footerFormat: '</table>', 
     shared: true, 
     useHTML: true 
     }, 
     plotOptions: { 
     column: { 
      pointPadding: 0.2, 
      borderWidth: 1 
     } 
     }, 
     series: [{ 
     "data": [100], 
     "name": "Rx" 
     }, { 
     "data": [90], 
     "name": "Tx" 
     }, { 
     "data": [10], 
     "name": "Dropped" 
     }, { 
     "data": [10], 
     "name": "No Match" 
     }] 
    }); 
    }); 

    $('#button').click(function() { 
    chart.series[0].setData([ 
     [200], 
     [180], 
     [20], 
     [20] 
    ]); 
    }); 
}); 

です。どんな助けもありがとうございます。

おかげ

+2

としてチャートを更新する必要があります:あなたは、4つの異なるシリーズを持って、1つのデータポイントを持つ各。しかし、更新関数を呼び出すと、4つのデータポイントで1つの系列( 'chart.series [0]')のみを更新します。チャートは、シリーズ1の3つの追加データポイントに合う3つの新しいカテゴリを追加し、シリーズ2-4のために追加するデータはありません。それぞれのシリーズごとに 'setData()'を呼び出す必要があります(*、または4つの異なるシリーズを使用しないでください - 単一のシリーズを代わりに使用することでコードとビジュアルディスプレイを単純化することができます...) – jlbriggs

+0

シングルシリーズ:http://jsfiddle.net/jlbriggs/mhuzmnev/ – jlbriggs

+0

正しい答えについては、作業コードだけでは不十分です。適切な説明も書かれています。説明のためにありがとう –

答えて

1

あなたは* Deep3015 *により、以下の答えに、実際の説明として

Fiddle

$('#button').click(function() { 
    chart.series[0].setData(
     [200] 
    ); 
    chart.series[1].setData(
     [180] 
    ); 
    chart.series[2].setData(
     [20] 
    ); 
    chart.series[3].setData(
     [20] 
    ); 
    }); 
+0

ありがとうございました。これは今のところ必要に応じて機能します。どのように私はこれを逃した! –

+0

この回答が受け入れられる場合は、[ここ](https://meta.stackexchange.com/a/5235)の受け取り方法をご覧ください –

関連する問題