关于highcharts动态曲线的问题---紧急求解!!

sanfenzhiyixue 2012-02-02 10:47:11
最近在用highcharts做关于统计用户量随时间变化的动态曲线,每秒钟刷新一次,每个曲线显示10个动态点,

应该达到的效果是:第1秒显示一个点,第2秒显示第2个点前一秒的点左移,并和第2秒的点连成1条直线,第三秒再出现一个点和前两秒的点连成一条曲线前两秒的点左移。以此类推,10秒以后 第1秒的点消失出现第11秒的点,曲线向左移动。。


但是现在的问题是在前10秒出现的点都在x轴的最右端,10秒以后10个点才展开形成一条曲线。请教怎么样才能让10秒钟之前的点在下一个点出现的时候左移?

代码:
var chart;
$(document).ready(function() {
chart = new Highcharts.Chart({
chart: {
renderTo: 'container',
defaultSeriesType: 'spline',
marginRight: 10,
events: {
load: function() {

var series1 = this.series[0];
var series2 = this.series[1];

}
}
},
title: {
text: 'counting'
},
xAxis: {
type: 'datetime',
tickPixelInterval: 150,
labels: {
formatter: function() {
return Highcharts.dateFormat('%H:%M:%S', this.value);
}
}


},
yAxis: {
title: {
text: 'number'
},
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: true
},
exporting: {
enabled: false
},
series: [{
id:'a',
name: 'online number',
data: (function() {
// generate an array of random data
var data = [],
time = (new Date()).getTime(),
i;

for (i = -10; i <= 0; i++) {
data.push({
x: null,
y: null

});
}
return data;
})()
},{
id:'b',
name: 'chatting number',
data: (function() {
// generate an array of random data
var data = [],
time = (new Date()).getTime(),
i;

for (i = -10; i <= 0; i++) {
data.push({
a: null,
b: null

});
}
return data;
})()
}]
},function(){
setInterval(function() {
var x = (new Date()).getTime(),
y = Math.random()*100;
chart.get('a').addPoint([x, y], true, true);
var a = x,
b = Math.random()*100;
chart.get('b').addPoint([a, b], true, true);
}, 1000);
});
});



...全文
714 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
FengYiYangQing 2014-09-27
  • 打赏
  • 举报
回复
就知道抄官网的例子
liln0530 2013-11-13
  • 打赏
  • 举报
回复
high不是有列子的么

$(function () {
    $(document).ready(function() {
        Highcharts.setOptions({
            global: {
                useUTC: false
            }
        });
    
        var chart;
        $('#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);
                        }, 1000);
                    }
                }
            },
            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++) {
                        data.push({
                            x: time + i * 1000,
                            y: Math.random()
                        });
                    }
                    return data;
                })()
            }]
        });
    });
    
});

yueyeyi1 2013-03-15
  • 打赏
  • 举报
回复
你的代码,怎么排版的看着太累,自己对照这个

$(function () {
    $(document).ready(function() {
        Highcharts.setOptions({
            global: {
                useUTC: false
            }
        });
    
        var chart;
        chart = new Highcharts.Chart({
            chart: {
                renderTo: 'container',
                type: 'spline',
                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);
                        }, 1000);
                    }
                }
            },
            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++) {
                        data.push({
                            x: time + i * 1000,
                            y: Math.random()
                        });
                    }
                    return data;
                })()
            }]
        });
    });
    
});

Evan0427 2013-01-11
  • 打赏
  • 举报
回复
求您这个曲线的例子。549458335我qq希望您可以帮助我
Evan0427 2013-01-11
  • 打赏
  • 举报
回复
楼主 求生成你这样曲线的代码,新手!!!
青龙老贼 2012-09-04
  • 打赏
  • 举报
回复
楼主,请问你的问题后面是怎么解决的呢?我现在也遇到了这样的问题,望指教……
jiangzhengdong 2012-08-31
  • 打赏
  • 举报
回复
请问柱状图的两个柱子间距如何调整,我查了他的api,没找到对应属性

87,990

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧