使用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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章