0

我正在使用 Highcharts 在单个图表上绘制多个系列。系列数据是从包含 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

我看不到一个电话就能完成所有系列的方法。我可以看到两个选项。

如果系列的数量是固定的,您可以在重绘选项设置为 false 的情况下调用 series.setData 对它们进行迭代,然后调用 redraw()。

如果系列的数量可能发生变化,您将不得不遍历 chart.series 调用 remove,然后遍历您的系列数组调用 chart.addSeries。

于 2013-04-02T17:35:15.193 回答