0

Highcharts を使用して、複数の系列を 1 つのグラフにグラフ化しています。系列データは、JSON 形式のデータを含むファイルから読み取られます。ファイルは数秒ごとに新しいデータで更新され、ファイルを再読み込みする機能があります。ファイル内のデータは次のとおりです。

[{"name": "series1", "data": [[1,109],[2,313],[3,192]]},{"name": "series2", "data": [[1,111],[2,112],[3,777]]}]

私が持っているコードは次のとおりです。

//Read JSON data from a file
$(function () {

    function getSeriesData(file) {
        var data = null;
        $.ajax({
        async: false,
            cache: false,
        url: file,
            method: 'GET',
            dataType: 'json',
            success: function(datasets){
                data = datasets;
            },
            error: function(error,text,http){
                alert("Error retrieving " + url + ".");
            }
        });  

        return data;
    }

    var graphData = getSeriesData("seriesData.json");

    var graphOptions = {
            chart: {
             type: 'line',
             renderTo: "container",
         },
         series: graphData
    };


    var graph = new Highcharts.Chart(graphOptions);

    var updateInterval = 1000 * 5;  // 5 seconds

    function update() {
        //Need to refresh series data here.
                    //Something like:
            graph.series = getSeriesData("series.json");
            graph.redraw();
            setTimeout(update, updateInterval);
    }

    update();});

ドキュメントを見ると、getSeriesData 関数を使用してすべてのシリーズ データを同時に再設定してファイルを再読み込みする方法はないようです。ここおよび他の場所のほとんどの例には、series[] 配列を使用して個々のシリーズのデータ​​を設定する方法があります。しかし、それは私が探しているものではありません。そのようにするには、コードをやり直す必要があるかもしれませんが、もっと簡単な方法があることを期待して、最初にここをチェックすると思いました! 前もって感謝します。

4

1 に答える 1

0

1回の呼び出しですべてのシリーズを実行する方法がわかりません。2 つのオプションが表示されます。

シリーズの数が固定されている場合は、redraw オプションを false に設定して series.setData を呼び出してから、redraw() を呼び出すことができます。

シリーズの数が変わる可能性がある場合は、chart.series を呼び出して remove を反復処理してから、chart.addSeries を呼び出してシリーズ配列を反復処理する必要があります。

于 2013-04-02T17:35:15.193 に答える