Highcharts - 通过点击添加数据

以下是通过点击添加数据的示例。

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

配置

chart.events 配置

chart.event 属性中添加 click 方法(整个图表的绘图区上所发生的点击事件)。该方法在图表绘图区上发生点击时会添加新的数据点。

chart: {
   events: {
      click: function (e) {
         // 获取点击坐标和数据项
         var x = e.xAxis[0].value,
         y = e.yAxis[0].value,
         series = this.series[0];
         
         // 添加点击的坐标
         series.addPoint([x, y]);
      }
   }
}

示例

文件名:highcharts_dynamic_click.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: 'scatter',
               margin: [70, 50, 60, 80],      
               
               events: {
                  click: function (e) {
                     // find the clicked values and the series
                     var x = e.xAxis[0].value,
                     y = e.yAxis[0].value,
                     series = this.series[0];
                     
                     // Add it
                     series.addPoint([x, y]);
                  }
               }
            };
            var title = {
               text: 'User supplied data'   
            };   
            var subtitle = {
               text: 'Click the plot area to add a point. Click a point to remove it.'
            };
            var xAxis = {
               gridLineWidth: 1,
               minPadding: 0.2,
               maxPadding: 0.2,
               maxZoom: 60
            };
            var yAxis = {
               title: {
                  text: 'Value'
               },
               minPadding: 0.2,
               maxPadding: 0.2,
               maxZoom: 60,
               
               plotLines: [{
                  value: 0,
                  width: 1,
                  color: '#808080'
               }]
            };   
            var legend = {
               enabled: false
            };
            var exporting = {
               enabled: false
            };
            var plotOptions = {
               series: {
                  lineWidth: 1,
                  point: {
                     events: {
                        'click': function () {
                           if (this.series.data.length > 1) {
                              this.remove();
                           }
                        }
                     }
                  }
               }
            };
            var series = [{
               data: [[20, 20], [80, 80]]
            }];     
            
            var json = {};   
            json.chart = chart; 
            json.title = title;     
            json.subtitle = subtitle;
            json.xAxis = xAxis;
            json.yAxis = yAxis; 
            json.legend = legend;  
            json.exporting = exporting;  
            json.series = series;    
            json.plotOptions = plotOptions;    
            $('#container').highcharts(json);
         });
      </script>
   </body>
   
</html>

以上图表实例的输出结果

❮ highcharts_dynamic_charts.html