4

ハイチャートを使用して毎日の統計を表示しています。ユーザーが日付範囲を選択できるようにしたいと考えています。

function requestData(chart, from, to, group) {
    $.ajax({
        url: '/stats/chart?from='+from+'&to='+to+'&group='+group,
        success: function(data) {
            chart.series[0].setData(data.data);
            chart.series[0].pointStart = data.start;
            chart.series[0].pointInterval = data.interval;
        },
        cache: false
    });
}

js 関数は ajax 呼び出しを行い、次のようなものを返します:-

{
"start":1358467200000,
"interval":86400000,
"data":[24,9,46,66,19,93,11,10,66,75,70,52,35,91,69,0,50,24,5,14,83,9,26,5,53,32,27,30,34,25,57,100]
}

チャートの pointStart と pointInterval の値を更新するにはどうすればよいですか?

4

3 に答える 3

6

Highcharts 3 以降、series.update()を使用できます。

chart.series[0].update({
    pointStart: data.start
    pointInterval: data.interval,
    data: data.data
}, false); // true if you want redraw
于 2013-04-22T13:55:51.810 に答える
1

元の質問を編集して、問題を説明する jsFiddle の例を示しましたが、提供する実用的なソリューションがあります。

Chart.addSeries()私のソリューションでは、チャートを完全に再初期化する必要はありませんが、すべてのシリーズが削除されてから、メソッドを介して新しいシリーズが追加されます。より効率的であると感じていSeries.setData()ますが、それを機能させる方法がわかりません-おそらく誰かがそうするでしょう!

私の現在の解決策(吸う):jsFiddleソリューション

したがって、元のポスターへの回答では、@ jacobdalton の回答が示すように、json オブジェクトをオブジェクトの形式に合わせて変更し、optionsそれらのオブジェクトをChart.setData()関数に提供する必要があります。

また、false引数Series.remove(false)に気付くかもしれませんChart.addSeries(false)- これらの引数は、これらの呼び出しが行われるたびにチャートが再レンダリングされないようChart.redraw()にし、処理を節約するために後で呼び出すことができます。

于 2013-03-13T20:25:21.510 に答える
0

chart.series[0]pointStart編集可能またはpointIntervalプロパティがありません。のような動的メソッドを介してこれらを割り当てchart.series[0].setData()、完全なオブジェクトを作成する必要がありoptionsます(現在、関数に受け入れ可能なパラメーターである値のみを送信していますdata.dataが、オブジェクトを取ることもできます- setData() のドキュメントを確認してくださいシリーズオプションの場合)。

オブジェクトの形式に合わせて json オブジェクトを変更することをお勧めしますoptions

{
    "pointStart":1358467200000,
    "pointInterval":86400000,
    "data":[24,9,46,66,19,93,11,10,66,75,70,52,35,91,69,0,50,24,5,14,83,9,26,5,53,32,27,30,34,25,57,100]
}

次に、json オブジェクトを に直接送信しますchart.series[0].setData(data)

于 2013-02-19T01:23:43.570 に答える