js图表库——ECharts带你入门

这个开源的图标库来自百度EFE数据可视化团队。Highcharts 与之比起来简直不能看啊,人家做一个图表都开始往大数据方面思考了,你还在做功能,这产品差距就不是一个数量级的。 这里就不多废话:


  Echarts 首页:http://echarts.baidu.com/index.html


  特性:http://echarts.baidu.com/doc/feature.html


  不贴地址了,想要了解的看一下特性就好了,想要入门的继续往下看。


  ECharts 底层依赖于 Html5 的轻量级的Canvas类库ZRender ,这也是它的效果这么绚丽的原因。它与 js charts类似,不依赖其他 js 类库,相比之下 Highcharts还要依赖JQuery等类库。不过,ECharts也不是什么缺点都没有的,在线演示平台、文档,


  初学者可能会被ECharts那个带你入门的那2个示例弄晕,这里来一个个解释:





  1、AMD规范的加载器——esl.js,这是什么?


  答:关于AMD规范可以参考阮一峰的这篇文章Javascript模块化编程(二):AMD规范 简单来说,AMD规范就是异步方式加载模块的一种方式,避免因为模块加载过慢而导致浏览器“假死”。


  


  2、我们先来看一下echart的大概的包: 
•echarts.js : 经过压缩,包含除地图外的全部图表
•echarts-original.js : 未压缩,可用于调试,包含除地图外的全部图表
•echarts-map.js : 经过压缩,全图表,包含world,china以及34个省市级地图数据
•echarts-original-map.js : 未压缩,可用于调试,全图表,包含world,china以及34个省市级地图数据


  看得出,这种分类非常有意义。





  3、echarts更规范的一点,那就是模块化加载,需要哪个部分就是用哪个部分。


  关于Echarts的那个入门图表,我想很多新手跟我一样的迷惑,require和require.config这个两个公共方法到底什么来的?


  答:AMD规范的加载器——esl.js的公共方法。(如有错误,请指正。)


  


  4、require.config的作用是什么?


  答:为模块加载器配置echarts的路径,从当前页面链接到echarts.js,定义所需的图表路径。一切尽在echarts-2.0.4文件夹下的src文件夹中。





  5、解释一下require方法?


  答:require方法有2个参数。


  第一个参数为一个数组,数组元素是需要加载的echarts模块,需要哪个就加载哪个。(经本人测试,这个数组传入一个空数组都是可以的 !- -)莫非,传入不正确,会加载全部文件到内存,传入正确就加载部分模块到内存?求大神解答!


  第二个参数为一个带一个参数的方法:function (ec){}, 这个ec对象就是echarts对象了。





  OK,基本解释完了。可能初学者看了Eharts入门实例还是不太理解那Echarts3种导入方式的用法。(入门示例只有2种——标签式单文件引入和模块化单文件引入)


  因为入门实例里,js文件指向的是百度服务器上的资源,而我们一般开发,js资源都是放在本地的。


  


  6、来看一下,本地创建3种Echarts导入的例子,下面是那3个示例文件的源码(官网Demo粗略修改而成):


  (1)、标签式单文件引入.html:  
  1. <!DOCTYPE html>
  2. <head>
  3.     <meta charset="utf-8">
  4.     <title>ECharts</title>
  5. </head>
  6. <body>
  7.     <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
  8.     <div id="main" style="height:400px"></div>
  9.     <!-- ECharts单文件引入 -->
  10.     <script src="js/echarts.js"></script>
  11.     <script type="text/javascript">
  12.         // 基于准备好的dom,初始化echarts图表
  13.         var myChart = echarts.init(document.getElementById('main')); 
  14.         
  15.         var option = {
  16.             tooltip: {
  17.                 show: true
  18.             },
  19.             legend: {
  20.                 data:['销量']
  21.             },
  22.             xAxis : [
  23.                 {
  24.                     type : 'category',
  25.                     data : ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
  26.                 }
  27.             ],
  28.             yAxis : [
  29.                 {
  30.                     type : 'value'
  31.                 }
  32.             ],
  33.             series : [
  34.                 {
  35.                     "name":"销量",
  36.                     "type":"bar",
  37.                     "data":[5, 20, 40, 10, 10, 20]
  38.                 }
  39.             ]
  40.         };

  41.         // 为echarts对象加载数据 
  42.         myChart.setOption(option); 
  43.     </script>
  44. </body>
复制代码


  (2)、模块化包引入.html,这个就需要用到2个src文件。


  1. <!DOCTYPE html>
  2. <head>
  3.     <meta charset="utf-8">
  4.     <title>ECharts</title>
  5.     <!--从当前页面,引入模块加载器esl.js-->
  6.     <script src="js/esl.js"></script>
  7. </head>
  8. <body>
  9.     <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
  10.     <div id="main" style="height:400px"></div>
  11.     <script type="text/javascript">
  12.         // 为模块加载器配置echarts的路径,从当前页面链接到echarts.js,定义所需的图表路径
  13.         require.config({
  14.             packages: [
  15.                 {
  16.                     name: 'echarts',
  17.                     location: 'js/src',      
  18.                     main: 'echarts'
  19.                 },
  20.                 {
  21.                     name: 'zrender',
  22.                     location: 'js/zrender/src', 
  23.                     main: 'zrender'
  24.                 }
  25.             ]
  26.         });
  27.         
  28.         // 使用
  29.         require(
  30.             [
  31.             ],
  32.             function (ec) {
  33.                 // 基于准备好的dom,初始化echarts图表
  34.                 var myChart = ec.init(document.getElementById('main')); 
  35.                 
  36.                 var option = {
  37.                     tooltip: {
  38.                         show: true
  39.                     },
  40.                     legend: {
  41.                         data:['销量']
  42.                     },
  43.                     xAxis : [
  44.                         {
  45.                             type : 'category',
  46.                             data : ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
  47.                         }
  48.                     ],
  49.                     yAxis : [
  50.                         {
  51.                             type : 'value'
  52.                         }
  53.                     ],
  54.                     series : [
  55.                         {
  56.                             "name":"销量",
  57.                             "type":"bar",
  58.                             "data":[5, 20, 40, 10, 10, 20]
  59.                         }
  60.                     ]
  61.                 };
  62.         
  63.                 // 为echarts对象加载数据 
  64.                 myChart.setOption(option); 
  65.             }
  66.         );
  67.     </script>
  68. </body>
复制代码


  (3)、模块化单文件引入.html


  1. <!DOCTYPE html>
  2. <head>
  3.     <meta charset="utf-8">
  4.     <title>ECharts</title>
  5.     <!--从当前页面,引入模块加载器esl.js-->
  6.     <script src="js/esl.js"></script>
  7. </head>
  8. <body>
  9.     <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
  10.     <div id="main" style="height:400px"></div>
  11.     <script type="text/javascript">
  12.         // 为模块加载器配置echarts的路径,从当前页面链接到echarts.js,定义所需的图表路径
  13.         require.config({
  14.             paths:{ 
  15.                 'echarts' : './js/echarts',
  16.                 'echarts/chart/bar' : './js/echarts'
  17.             }
  18.         });
  19.         
  20.         // 使用
  21.         require(
  22.             [
  23.                 'echarts',
  24.                 'echarts/chart/bar' // 使用柱状图就加载bar模块,按需加载
  25.             ],
  26.             function (ec) {
  27.                 // 基于准备好的dom,初始化echarts图表
  28.                 var myChart = ec.init(document.getElementById('main')); 
  29.                 
  30.                 var option = {
  31.                     tooltip: {
  32.                         show: true
  33.                     },
  34.                     legend: {
  35.                         data:['销量']
  36.                     },
  37.                     xAxis : [
  38.                         {
  39.                             type : 'category',
  40.                             data : ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
  41.                         }
  42.                     ],
  43.                     yAxis : [
  44.                         {
  45.                             type : 'value'
  46.                         }
  47.                     ],
  48.                     series : [
  49.                         {
  50.                             "name":"销量",
  51.                             "type":"bar",
  52.                             "data":[5, 20, 40, 10, 10, 20]
  53.                         }
  54.                     ]
  55.                 };
  56.         
  57.                 // 为echarts对象加载数据 
  58.                 myChart.setOption(option); 
  59.             }
  60.         );
  61.     </script>
  62. </body>
复制代码




  2、如果上面的还有不明白的,参考一下我的本地目录:



js图表库——ECharts带你入门_第1张图片



  js中有如下的文件:






  其中,src是echarts-2.0.4文件夹下的src文件夹,zrender里面也有一个src文件夹,是zrender-2.0.4文件夹下面的src文件夹

你可能感兴趣的:(js图表库——ECharts带你入门)