Highcharts - 每秒更新曲线图

以下是每秒更新曲线图的示例。

我们在前面的章节已经了解了 Highcharts 基本配置语法。接下来让我们来看下 Highcharts 的其他配置。

配置

chart.events 配置

chart.event 属性中添加 load 方法(图表加载事件)。在 1000 毫秒内随机产生数据点并生成图表。

chart: {
   events: {
      load: function () {
         // 图表每秒更新一次
         var series = this.series[0];
         
         setInterval(function () {
            var x = (new Date()).getTime(), // 当期时间
            y = Math.random();
            series.addPoint([x, y], true, true);
         }, 1000);
      }
   }
}

示例

文件名:highcharts_dynamic_spline.htm

<html>
   <head>
      <title>Highcharts 教程</title>
      <script src = "https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
      <script src = "https://code.highcharts.com/highcharts.js"></script>  
   </head>
   
   <body>
      <div id = "container" style = "width: 550px; height: 400px; margin: 0 auto"></div>
      <script language = "JavaScript">
         $(document).ready(function() {
            var chart = {
               type: 'spline',
               animation: Highcharts.svg, // don't animate in IE < IE 10.
               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);
                  }
               }
            };
            var title = {
               text: 'Live random data'   
            };   
            var xAxis = {
               type: 'datetime',
               tickPixelInterval: 150
            };
            var yAxis = {
               title: {
                  text: 'Value'
               },
               plotLines: [{
                  value: 0,
                  width: 1,
                  color: '#808080'
               }]
            };
            var 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);
               }
            };
            var plotOptions = {
               area: {
                  pointStart: 1940,
                  marker: {
                     enabled: false,
                     symbol: 'circle',
                     radius: 2,
                     
                     states: {
                        hover: {
                           enabled: true
                        }
                     }
                  }
               }
            };
            var legend = {
               enabled: false
            };
            var exporting = {
               enabled: false
            };
            var 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;
               }())    
            }];     
      
            var json = {};   
            json.chart = chart; 
            json.title = title;     
            json.tooltip = tooltip;
            json.xAxis = xAxis;
            json.yAxis = yAxis; 
            json.legend = legend;  
            json.exporting = exporting;   
            json.series = series;
            json.plotOptions = plotOptions;
   
            Highcharts.setOptions({
               global: {
                  useUTC: false
               }
            });
            $('#container').highcharts(json);
         });
      </script>
   </body>
   
</html>

以上图表实例的输出结果

❮ highcharts_dynamic_charts.html