0

我正在创建一个图表并每 5 分钟填充一次随机数据。我将 xAxis 数据范围设置为 5 小时,当从初始数据开始时,它的宽度在图表中已满,但当连续添加点时,数据宽度正在减小。我该怎么做才能使它不减小系列宽度?

我有以下代码:

$(function () {
    var current_time = (new Date()).getTime()+300000;
    var now_time = (new Date()).getTime();
    var zone_name = ['A','B','C'];

    $(document).ready(function() {

        Highcharts.setOptions({
            global: {
                useUTC: false
            }
        });

        $('#container').highcharts({
            chart: {
                type: 'spline',
                animation: Highcharts.svg,
                marginRight: 10,
                events: {
                    load: function() {

                       var chartsss = $('#container').highcharts();

                        setInterval(function() {

                        for(var i=0;i<zone_name.length;i++)
                        {
                            var seriessx = chartsss.series[i];
                            seriessx.addPoint([current_time, Math.random()], false, true);
                            seriessx.addPoint([current_time, Math.random()], false, true);
                        }

                            chartsss.redraw();
                            current_time += 300000;

                        }, 1000);
                    }
                }
            },
            plotOptions: {
                series: {
                    marker: {
                        enabled: false
                    }
                },
                spline: {
                lineWidth: 2,
                states: {
                    hover: {
                        lineWidth:3
                    }
                },
                marker: {
                    enabled: false,
                    states: {
                        hover: {
                            enabled: false,
                            symbol: 'circle',
                            fillColor: '#ff0000',
                            radius: 4,
                            lineWidth: 1
                        }
                    }
                }
            },
            },
            title: {
                text: 'Daily Zone'
            },
            xAxis: {
                type: 'datetime',
                dateTimeLabelFormats: {
                    day: '%e of %b',
                    minute: '%H:%M',
                    hour: '%H:%M'
                },
                tickPosition: 'inside',
                tickInterval: 3600 * 1000,
                minRange:5 * 3600 * 1000,
                maxRange:5 * 3600 * 1000
            },
            yAxis: {
                title: {
                    text: 'Value'
                },
                plotLines: [{
                    value: 0,
                    width: 1,
                    color: '#808080'
                }]
            },
            tooltip: {
                formatter: function() {
                        return '<b>'+ this.series.name +'</b><br/>'+
                        Highcharts.dateFormat('%H:%M', this.x) +'<br/>'+
                        Highcharts.numberFormat(this.y, 2);
                }
            },
            legend: {
                enabled: true
            },
            exporting: {
                enabled: false
            },
            series: (function(){
                var seriesx = [];
                for(var i=0;i<zone_name.length;i++)
                {
                    var datax = [];
                    var time = (new Date()).getTime();
                    now_time=current_time;
                    for(var j = -59 ;j <= 0;j++)
                    {
                        datax.push({
                            x: now_time,
                            y: Math.random()
                        });
                        now_time+=300000;
                    }
                    seriesx.push({
                        name:zone_name[i],
                        data: datax
                    });
                }
                current_time=now_time;
                return seriesx;
            })()
        });
    });

});

JsFiddle 链接:http: //jsfiddle.net/jedipalm/YLFhD/4/

开始图表时的图像:http: //i.stack.imgur.com/rE8m3.jpg

在几秒钟内连续添加点时的图像:http: //i.stack.imgur.com/J8GtA.jpg

对不起,我的英语不好。

4

2 回答 2

1

为什么要添加两次相同的点?Highcharts 不支持一个系列中的两个点具有相同的 x 值。删除了其中一个addPoint()并且工作正常:http: //jsfiddle.net/YLFhD/8/

于 2013-09-04T09:42:53.090 回答
0

尝试以下代码:

 for(var j = -120 ;j <= 0;j++)
                    {
                        datax.push({
                            x: now_time,
                            y: Math.random()
                        });
                        now_time+=300000;
                    }

http://jsfiddle.net/YLFhD/6/

于 2013-09-04T08:57:28.840 回答