2016-07-25 6 views
0

スタックバーグラフを再描画せずに更新したいと考えています。データは、AJAXリクエストから得られます。 私のサンプルコードは、唯一のバーがない伝説を更新している。この場合には、ここで私はにsetDataを使用してみましたとだけシリーズを更新しているhttp://jsfiddle.net/my8646oc/47/バーグラフとその凡例をハイチャートで再描画せずに更新する方法

$(function() { 
    $('#container').highcharts({ 

     chart: { 
     type: 'bar', 
      animation: { 
       duration: 1000 
      } 
     }, 
     plotOptions: { 
      series: { 
      stacking: 'normal' 
      } 
     }, 
     legend: { 
        symbolHeight: '0', 
        layout: 'horizontal', 
        verticalAlign: 'top', 
        horizontalAlign: 'right', 
        labelFormatter: function() { 
         return '<span>' + this.name + ': ' + this.yData[ 0 ] + '</span>'; 
        }, 

        y: -15, 
        useHTML: true 
       }, 

     xAxis: { 
      categories: [] 
     }, 

     series: [{ 
      data: [29.9], 
      name: 'one' 
     }, 
     {   data: [39.9], 
     name: 'two' 
}] 

    }); 

    var i = 1; 
    $('#update').click(function() { 
     var chart = $('#container').highcharts(); 
     var newData = [{ 
      data: [39.9], 
      name: 'one' 
     }, 
     {   data: [49.9], 
     name: 'two' 
}]; 
     //chart.series[0].update({ 
     // name: "TEST" + i++, 
     // data : 
     //}); 

     var ctr, 
        count, 
        len = chart.series.length, 
        len2 = newData.length; 
       for (ctr = 0; ctr < len; ctr = ctr + 1) { 
        for (count = 0; count < len2; count = count + 1) { 
         if (newData[ count ].name === chart.series[ ctr].name) { 
          chart.series[ ctr ].setData(newData[ count ].data[ 0 ]); 
          delete newData[ count ]; 
          break; 
         } 
        } 
       } 


    }); 
}); 

です。このための任意の適切なソリューション?誰でも??

答えて

0

highcharts.jsはわかりませんが、データ列を配列として渡すことでグラフが機能します。

chart.series[ ctr ].setData(newData[ count ].data[0]); 

代わりseries.setDataのあなたがseries.updateを(使用したい。このため

chart.series[ ctr ].setData(newData[ count ].data); 

更新のデモ

Demo

+0

のみ最初のデータではバーで更新していないとも伝説に変更された(データ伝説は更新されていません) –

+0

私はデモを更新しました。伝説については、[documentation](http://api.highcharts.com/highcharts) – slashsharp

+0

こんにちはスラッシュシャープ、私もこれを達成した(私は質問の下に私のコードの下にこれを述べている)を読む必要があります。私の挑戦は伝説を更新することでした。ドキュメンテーションを見ても何も見つかりませんでした。あなたも伝説を更新する何かを提案してもらえますか? –

0

への変更)()。

コード:

chart.series[ ctr ].update({ data: newData[ count ].data[ 0 ] }); 

更新フィドル:この場合

+0

それは若干のエラー@jlbriggsを与えています。それは更新されていません –

+0

あなたはより具体的になることができますか?それは私のために更新しています。 – jlbriggs

+0

'one'という名前のデータは凡例とグラフで定義されていません。その名前は 'two'という名前のバーを表示します@jibriggs –

関連する問題