图表异步加载数据

Highcharts 曲线图Highcharts 曲线图

以下实例演示了异步加载数据曲线图表。这边我们通过 jQuery.getJSON() 方法从异步加载 csv 文件:

我们在前面的章节已经了解了 Highcharts 配置语法。接下来让我们来看个完整实例:

导入 data.js 文件

异步加载数据需要引入以下js 文件:

<script src="http://code.highcharts.com/modules/data.js"></script> 
w^3^x^u^e.com提供本在线速查手册,请勿盗用!

配置

X 轴

以每周为间隔设置 X 轴:

var xAxis = {
   tickInterval: 7 * 24 * 3600 * 1000, // 一周
   tickWidth: 0,
   gridLineWidth: 1,
   labels: {
      align: ''left'',
      x: 3,
      y: -3
   }
};
w^3^x^u^e.com提供本在线速查手册,请勿盗用!

Y 轴

以每周为间隔设置 Y 轴:

配置两个 Y 轴:

var yAxis = [{ // 左边 Y 轴
      title: {
         text: null
      },
      labels: {
         align: ''left'',
         x: 3,
         y: 16,
         format: ''{value:.,0f}''
      },
      showFirstLabel: false
  },{ // 右边 Y 轴
      linkedTo: 0,
      gridLineWidth: 0,
      opposite: true,
      title: {
         text: null
      },
      labels: {
         align: ''right'',
         x: -3,
         y: 16,
         format: ''{value:.,0f}''
      },
      showFirstLabel: false
   }
];
w^3^x^u^e.com提供本在线速查手册,请勿盗用!

plotOptions

plotOptions用于设置图表中的数据点相关属性。

 var plotOptions = {
   series: {
      cursor: ''pointer'',
      point: {
         events: {
            click: function (e) {
               hs.htmlExpand(null, {
                  pageOrigin: {
                     x: e.pageX || e.clientX,
                     y: e.pageY || e.clientY
                  },
                  headingText: this.series.name,
                  maincontentText: Highcharts.dateFormat(''%A, %b %e, %Y'', this.x) 
                     + '':<br/> '' + this.y + '' visits'',
                  width: 200
               });
            } 
         }
      },
      marker: {
        lineWidth: 1
      }
   }
}
w^3^x^u^e.com提供本在线速查手册,请勿盗用!

实例

文件名:highcharts_line_ajax.html

<html>
<head>
   <title>Highcharts 教程 | W3xue教程(w3xue.com)</title>
   <script src="/js/jquery-2.1.4.min.js"></script>
   <script src="/js/hc/highcharts5.0.6.js"></script>   
   <script src="http://code.highcharts.com/modules/data.js"></script> 
</head>
<body>
<div id="container" style="width: 550px; height: 400px; margin: 0 auto"></div>
<script language="JavaScript">
$(document).ready(function() {
   var title = {
      text: ''Daily visits at www.highcharts.com''   
   };
   var subtitle = {
      text: ''Source: Google Analytics''
   };
   var xAxis = {
      tickInterval: 7 * 24 * 3600 * 1000, // one week
      tickWidth: 0,
      gridLineWidth: 1,
      labels: {
         align: ''left'',
         x: 3,
         y: -3
      }
   };
   var yAxis = [{ // left y axis
         title: {
            text: null
         },
         labels: {
            align: ''left'',
            x: 3,
            y: 16,
            format: ''{value:.,0f}''
         },
         showFirstLabel: false
      },{ // right y axis
         linkedTo: 0,
         gridLineWidth: 0,
         opposite: true,
         title: {
            text: null
         },
         labels: {
            align: ''right'',
            x: -3,
            y: 16,
            format: ''{value:.,0f}''
         },
         showFirstLabel: false
      }
   ];   

   var tooltip = {
      shared: true,
      crosshairs: true
   }

   var legend = {
      align: ''left'',
      verticalAlign: ''top'',
      y: 20,
      floating: true,
      borderWidth: 0
   };

   var plotOptions = {
      series: {
         cursor: ''pointer'',
         point: {
            events: {
               click: function (e) {
                  hs.htmlExpand(null, {
                     pageOrigin: {
                        x: e.pageX || e.clientX,
                        y: e.pageY || e.clientY
                     },
                     headingText: this.series.name,
                     maincontentText: Highcharts.dateFormat(''%A, %b %e, %Y'', this.x) 
                        + '':<br/> '' + this.y + '' visits'',
                     width: 200
                  });
               }
            }
         },
         marker: {
            lineWidth: 1
         }
      }
   }
   
   var series =  [{
         name: ''All visits'',
         lineWidth: 4,
         marker: {
            radius: 4
         }
      }, {
         name: ''New visitors''
      }]

   var json = {};

   json.title = title;
   json.subtitle = subtitle;
   json.xAxis = xAxis;
   json.yAxis = yAxis;
   json.tooltip = tooltip;
   json.legend = legend;
   json.series = series;
   json.plotOptions = plotOptions;
   
   $.getJSON(''http://www.highcharts.com/samples/data/jsonp.php?filename=analytics.csv&callback=?'', function (csv) {
      var data = {
         csv: csv
      };
	  json.data = data;
	  $(''#container'').highcharts(json);
   });   
});
</script>
</body>
</html>
w^3^x^u^e.com提供本在线速查手册,请勿盗用!

我来试一下

以上实例输出结果为:

Highcharts 曲线图Highcharts 曲线图