使用highcharts完成实时信息显示的动态波动图表

原理:使用highcharts中的series.addPoint([x, y], true, true)方法来动态加载一个点到图形的末尾。
说明:使用highcharts时需要引入highcharts的js文件。
代码实现部分和说明:
html页:

<html>
    <body>
    <div id="container"></div>
    </body>
    </html>

js部分:

<script tyep="text/javascript">
    $(function(){
               var chart;
               $('#container').highcharts({
                    chart: {
                        type: 'area',
                        animation: Highcharts.svg, // 旧版IE无法使用
                        marginRight: 10,
                        events: {
                            load: function () {
                                // 设置每秒的更新数据,时间间隔为1000ms,即1s(此处可自己设置)
                                var series = this.series[0];
                                setInterval(function () {
                                    //设置x为添加点的时间
                                    var x = (new Date()).getTime(),
                                    //y的值通过方法SetYdata()得到
                                    y = parseFloat(SetYdata());
                                    series.addPoint([x, y], true, true);
                                }, 1000);
                            }
                        }
                    },
                    title: {
                        text: '温度实时信息'
                    },
                    xAxis: {
                        type: 'datetime',
                    },
                    yAxis: {
                        title: {
                            text: '温度'
                        },
                        plotLines: [{
                            value: 0,
                            width: 1,
                            color: '#808080'
                        }],
                        alternateGridColor: '#FDFFD5',
                        allowDecimals: true,
                        tickPixelInterval: '50',
                        endOnTick: true
                    },
                    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
                    },
                    credits:{//是否显示版权
                        enabled:false
                    },
                    exporting: {//是否导出
                        enabled: false
                    },
                    series: [{
                        name: '温度',
                        data: (function () {
                            // 设置初始数据为0
                            var data = [],
                                time = (new Date()).getTime(),
                                i;
                            for (i = -19; i <= 0; i++) {
                                data.push({
                                    x: time + i * 1000,
                                    y: 0
                                });
                            }
                            return data;
                        })()
                    }]
                });
            });
    });
    function SetYdata(){
       var y;
    //通过轮询或者广播的方式获取y的实时的值
    return y;
    }
    </script>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章