扩展xAxis的范围以显示实时数据的特定点数

时间:2014-10-30 16:01:24

标签: highcharts

我想修改highcharts示例以显示实时数据。它当前显示约20个点,然后在添加新点时从视图中推出/删除最旧的点。

什么控制显示的点数?或者,如何在最旧的点落下之前展开轴以显示最小点数?

http://jsfiddle.net/wjnoeo69/2/

(也发布代码,但只是因为堆栈需要我们......)

$(function () {
$(document).ready(function () {
    Highcharts.setOptions({
        global: {
            useUTC: false
        }
    });

    $('#container').highcharts({
        chart: {
            type: 'spline',
            animation: Highcharts.svg, // don't animate in old IE
            marginRight: 10,
            events: {
                load: function () {

                    // set up the updating of the chart each second
                    var series = this.series[0];
                    setInterval(function () {
                        var x = (new Date()).getTime(), // current time
                            y = Math.random();
                        series.addPoint([x, y], true, true);
                    }, 2000);
                }
            }
        },
        title: {
            text: 'Live random data'
        },
        xAxis: {
            type: 'datetime',
            tickPixelInterval: 150,

        },
        yAxis: {
            title: {
                text: 'Value'
            },
            plotLines: [{
                value: 0,
                width: 1,
                color: '#808080'
            }],

        },
        tooltip: {
            formatter: function () {
                return '<b>' + this.series.name + '</b><br/>' +
                    Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', this.x) + '<br/>' +
                    Highcharts.numberFormat(this.y, 2);
            }
        },
        legend: {
            enabled: false
        },
        exporting: {
            enabled: false
        },
        series: [{
            name: 'Random data',
            data: (function () {
                // generate an array of random data
                var data = [],
                    time = (new Date()).getTime(),
                    i;

                for (i = -19; i <= 0; i += 1) {
                    data.push({
                        x: time + i * 1000,
                        y: Math.random()
                    });
                }
                return data;
            }())
        }]
    });
});

});

1 个答案:

答案 0 :(得分:1)

这一行是添加和删除点:

series.addPoint([x, y], true, true);

正如您在docs中所看到的,第三个参数代表shift,用于删除添加新点时的最后一个点。您可以通过设置false来控制删除点:

series.addPoint([x, y], true, false);

所以,在演示中没有20点的魔力 - 只是初始点数是20。