Javascript 多系列高股价动态图

Javascript 多系列高股价动态图,javascript,jquery,ajax,highcharts,real-time,Javascript,Jquery,Ajax,Highcharts,Real Time,我已经有一个实时实时实时图形与一个系列的工作。就像 这是我的js代码 <script> var chart; function requestData() { $.ajax({ url: 'live-server-data.php', success: function(point) { var series = chart.series[0], shift = series.data.l

我已经有一个实时实时实时图形与一个系列的工作。就像

这是我的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>
如何使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
});

好的,我做了第一个选择,但是我仍然没有得到预期的结果,看看,这就是生成图表的原因。我错过了什么?这要看情况了。1) 是否要使用多个系列?如何区分
系列X
系列Y
?2) 确保数据按x值升序排序(点数组中的第一项:
[1430687116000,994]
->
1430687116000
)。
$.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
});