簡體   English   中英

多系列Highstock實時圖表

[英]Multiple series highstock live chart

我已經有一個實時實時圖表,其中包含一系列工作。 就像本教程一樣

這是我的js代碼

<script>
var chart;
function requestData() {
    $.ajax({
        url: 'live-server-data.php',
        success: function(point) {
            var series = chart.series[0],
                shift = series.data.length > 20;
            chart.series[0].addPoint(point, true, shift);
            setTimeout(requestData, 1000);    
        },
        cache: false
    });
}
</script>

這是live-server-data.php傳遞的JSON

[1430687116000,994]

如何使js腳本圖不止一個系列? 我的猜測是迭代傳遞的JSON數組並為每個系列添加點,但是不知道如何在js,jquery,ajax或我必須使用的任何東西上實現該點。

您需要兩件事:

1)您的服務器應在該請求中返回更多信息,例如:

[ [1430687116000, 994], [1430687116000, 5], ... , [1430687116000, 11] ]

或更佳的格式僅提供一次時間戳:

{
    "timestamp": 1430687116000,
    "points": [ 994, 5, ... , 11 ]
}

2)現在只需更新所有系列:

$.ajax({
    url: 'live-server-data.php',
    success: function(points) {
        var series = chart.series,
            shift;

        $.each(series, function(i, s) {
            shift = s.data.length > 20;
            s.addPoint(points[i], false, shift);
        });
        setTimeout(requestData, 1000);   
        chart.redraw(); 
    },
    cache: false
});

或使用JSON的第二種格式,它將是:

$.ajax({
    url: 'live-server-data.php',
    success: function(points) {
        var series = chart.series,
            shift;

        $.each(series, function(i, s) {
            shift = s.data.length > 20;
            s.addPoint([points.timestamp, points.data[i]], false, shift);
        });
        setTimeout(requestData, 1000);   
        chart.redraw(); 
    },
    cache: false
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM