2

新しいデータの列(カテゴリ)が以前よりも少ない場合、ハイチャートチャートの更新で問題が発生します。

フィドル: http: //jsfiddle.net/ggoforth/bZAF7/

私が次のようなチャートを持っていると考えてください:

var chart = new Highcharts.Chart({
    chart: {
        renderTo: 'container',
        type: 'column'
    },
    xAxis: {
        categories: ['pizza', 'french fries']  
    },
    series: [{
        data: [55, 32]   
    }]
});

これにより、2列の縦棒グラフがレンダリングされます。次に、いくつかのボタンを介して私は行います:

chart.series[0].setData([55, 32, 17], false);
chart.xAxis[0].setCategories(['pizza', 'french fries', 'nachos'], false);
chart.redraw();

これにより、チャートが3列になるように更新されます。これはすべて問題なく機能します。ただし、後で、グラフを2列で更新した場合は次のようになります。

chart.series[0].setData([55, 32], false);
chart.xAxis[0].setCategories(['pizza', 'french fries'], false);
chart.redraw();

「オプションが未定義です」というエラーが表示されます。これは再現可能であり、ここに問題を示すフィドルがあります:http: //jsfiddle.net/ggoforth/bZAF7/

新しいデータを設定する前に、最初にチャートで行う必要のある「リセット」のようなものはありますか?私が言ったように、それは2列-> 3列から行くときに機能しますが、その逆はありません。

助けてくれてありがとう!

4

2 に答える 2

2

次の行を削除できます。

chart.xAxis[0].setCategories(['pizza', 'french fries'], false);

デモ

ご覧のとおり、問題は、新しいデータのカテゴリ数を下回ることはできないため、シリーズよりも最初にカテゴリを更新する必要があることです。次の例のように。
http://jsfiddle.net/bZAF7/6/

したがって、この問題を解決するには、次の行を逆にする必要があります。

chart.series[0].setData([55, 32], false);
chart.xAxis[0].setCategories(['pizza', 'french fries'], false);

更新:Gregがコメントで述べたように、これはHighcharts https://github.com/highslide-software/highcharts.com/issues/970のバグであり、おそらく最新のHighchartsリリースで修正されています。

于 2012-05-18T21:43:36.523 に答える
2

シリーズを削除して再度追加すると機能します。

   try {
        chart.series[0].remove();
        chart.addSeries({});
        chart.series[0].setData([55, 32], false);
        chart.xAxis[0].setCategories(['pizza', 'french fries'], false);
        chart.redraw();
    } catch (e) {
        alert(e);   
    }

ここでフィドルを更新しました。

于 2012-05-18T20:46:56.220 に答える