echart简介_动力节点Java学院整理


Posted in Javascript onAugust 11, 2017

1. 插件的下载

以下是ECharts的下载链接,需要注意的是ECharts内部也是依赖于另一个插件的叫ZRender,当然对于大部分图表而言不需要ZRender的,但是对于地图控件及其他复杂的呈现控件而已都是需要ZRender的。为了避免不要的问题出现,建议大家在下载ECharts时同时也要下载ZRender。

ECharts下载地址: http://echarts.baidu.com/

ZRender下载地址:http://ecomfe.github.io/zrender/index.html

下载之后解压各自的文件目录结构如下:

ECharts:

echart简介_动力节点Java学院整理     

 ZRender:

 echart简介_动力节点Java学院整理

2. 插件的引用

首先,新建一个Web应用程序,然后添加刚刚下载的文件,具体的目录结构如下:

echart简介_动力节点Java学院整理

这里有以下几点需要说明:

  • 所有的跟ECharts有关的文件全部都在echarts文件夹下
  • echarts文件夹的内容分为两部分

1) 一部分是以echarts开头的js文件,这些文件全部来自于1.中的ECharts文件目录中的js文件夹下的文件,也就是1.中的图中红框标注的js下的文件。如下:

echart简介_动力节点Java学院整理

2)另一部分是一个名为zrender的文件夹,这里需要特别注意的是该文件夹的命名必须为zrender,因为在echarts的js文件中对zrender的引用都是以zrender为根目录的,zrender文件夹的内容即为1.中zrender文件目录中的src文件夹下的内容,如下:

echart简介_动力节点Java学院整理

3. 在页面中的具体使用

按照上边的步骤配置过之后,我们就可以在页面中引用了,这里我主要是演示地图控件的使用方式,因为地图的引用跟其他的基本图形的引用不太一样。其他的图形的呈现也会做一个简要的演示。

MapChart

首先在跟2中的echarts文件夹同一个目录(也就是Modules文件夹)下添加一个aspx页或html页,需要注意的是,如果是在aspx页中使用echarts时,需要把要渲染的div放在form标签之外,否则图形是显示不出来的。

在head标签中添加对echarts的引用如下:

<head runat="server"> 
  <title></title> 
  <script src="echarts/esl.js" type="text/javascript"></script> 
</head>

在body标记中,form标记之外,添加一个div,用来做图表渲染的容器。如下:

<body> 
 
<div id="main"style="height:500px;border:1px solid #ccc;padding:10px;"></div> 
 
…………… 
 
…………… 
 
</body>

在上面中添加的div标记下,添加如下的js代码段,如下:

<script type="text/javascript"> 
 
    //为模块加载器配置echarts的路径,这里主要是配置map图表的路径,其他的图表跟map的配置还不太一样,下边也会做另一种类型的图表事例。 
这里引用的主要是echarts文件夹下的echarts-map文件,而其他类型的图表引用的都是echarts文件夹下的echarts文件。 
 
    require.config({ 
 
      paths: { 
 
        echarts:'./echarts/echarts', 
 
        'echarts/chart/map':'./echarts/echarts-map' 
 
      } 
 
    }); 
 
   //动态加载echarts,在回掉函数中使用,要注意保持按需加载结构定义图表路径 
 
    require( 
 
    [ 
 
      'echarts', 
 
      'echarts/chart/map' 
 
    ], 
 
    function (ec) { 
 
      varmyChart=ecinit(documentgetElementById('main')); 
 
      //option主要是图标的一些设置,这不是这篇文章的重点,关于具体的设置可以参考官方的文档说明文档 
 
option= { 
 
        title: { 
 
          text:'iphone销量', 
 
          subtext:'纯属虚构', 
 
          x:'center' 
 
        }, 
 
        tooltip: { 
 
          trigger:'item' 
 
        }, 
 
        legend: { 
 
          orient:'vertical', 
 
          x:'left', 
 
          data: ['iphone3','iphone4','iphone5'] 
 
        }, 
 
        dataRange: { 
 
          min:0, 
 
          max:2500, 
 
          text: ['高','低'],      
 
          calculable:true, 
 
          textStyle: { 
 
            color:'orange' 
 
          } 
 
        }, 
 
        toolbox: { 
 
          show:true, 
 
          orient:'vertical', 
 
          x:'right', 
 
          y:'center', 
 
          feature: { 
 
            mark:true, 
 
            dataView: { readOnly:false }, 
 
            restore:true, 
 
            saveAsImage:true 
 
          } 
 
        }, 
 
        series: [ 
 
    { 
 
      name:'iphone3', 
 
      type:'map', 
 
      mapType:'china', 
 
      selectedMode: 'single', 
 
      itemStyle: { 
 
        normal: { label: { show:true },color:'#ffd700' },// for legend 
 
        emphasis: { label: { show:true} } 
 
      }, 
 
      data: [ 
 
        { name:'北京',value:Math.round(Math.random() *1000) }, 
 
        { name:'天津',value:Math.round(Math.random() *1000) }, 
 
        { name:'上海',value:Math.round(Math.random() *1000) }, 
 
        { name:'重庆',value:Math.round(Math.random() *1000) }, 
 
        { name:'河北',value:Math.round(Math.random() *1000) }, 
 
        { name:'河南',value:Math.round(Math.random() *1000) }, 
 
        { name:'云南',value:Math.round(Math.random() *1000) }, 
 
        { name:'辽宁',value:Math.round(Math.random() *1000) }, 
 
        { name:'黑龙江',value:Math.round(Math.random() *1000) }, 
 
        { name:'湖南',value:Math.round(Math.random() *1000) }, 
 
        { name:'安徽',value:Math.round(Math.random() *1000) }, 
 
        { name:'山东',value:Math.round(Math.random() *1000) }, 
 
        { name:'新疆',value:Math.round(Math.random() *1000) }, 
 
        { name:'江苏',value:Math.round(Math.random() *1000) }, 
 
        { name:'浙江',value:Math.round(Math.random() *1000) }, 
 
        { name:'江西',value:Math.round(Math.random() *1000) }, 
 
        { name:'湖北',value:Math.round(Math.random() *1000) }, 
 
        { name:'广西',value:Math.round(Math.random() *1000) }, 
 
        { name:'甘肃',value:Math.round(Math.random() *1000) }, 
 
        { name:'山西',value:Math.round(Math.random() *1000) }, 
 
        { name:'内蒙古',value:Math.round(Math.random() *1000) }, 
 
        { name:'陕西',value:Math.round(Math.random() *1000) }, 
 
        { name:'吉林',value:Math.round(Math.random() *1000) }, 
 
        { name:'福建',value:Math.round(Math.random() *1000) }, 
 
        { name:'贵州',value:Math.round(Math.random() *1000) }, 
 
        { name:'广东',value:Math.round(Math.random() *1000) }, 
 
        { name:'青海',value:Math.round(Math.random() *1000) }, 
 
        { name:'西藏',value:Math.round(Math.random() *1000) }, 
 
        { name:'四川',value:Math.round(Math.random() *1000) }, 
 
        { name:'宁夏',value:Math.round(Math.random() *1000) }, 
 
        { name:'海南',value:Math.round(Math.random() *1000) }, 
 
        { name:'台湾',value:Math.round(Math.random() *1000) }, 
 
        { name:'香港',value:Math.round(Math.random() *1000) }, 
 
        { name:'澳门',value:Math.round(Math.random() *1000) } 
 
      ] 
 
    }, 
 
    { 
 
      name:'iphone4', 
 
      type:'map', 
 
      mapType:'china', 
 
      selectedMode: 'single', 
 
      itemStyle: { 
 
        normal: { label: { show:true },color:'#ff8c00' },// for legend 
 
        emphasis: { label: { show:true} } 
 
      }, 
 
      data: [ 
 
        { name:'北京',value:Math.round(Math.random() *1000) }, 
 
        { name:'天津',value:Math.round(Math.random() *1000) }, 
 
        { name:'上海',value:Math.round(Math.random() *1000) }, 
 
        { name:'重庆',value:Math.round(Math.random() *1000) }, 
 
        { name:'河北',value:Math.round(Math.random() *1000) }, 
 
        { name:'安徽',value:Math.round(Math.random() *1000) }, 
 
        { name:'新疆',value:Math.round(Math.random() *1000) }, 
 
        { name:'浙江',value:Math.round(Math.random() *1000) }, 
 
        { name:'江西',value:Math.round(Math.random() *1000) }, 
 
        { name:'山西',value:Math.round(Math.random() *1000) }, 
 
        { name:'内蒙古',value:Math.round(Math.random() *1000) }, 
 
        { name:'吉林',value:Math.round(Math.random() *1000) }, 
 
        { name:'福建',value:Math.round(Math.random() *1000) }, 
 
        { name:'广东',value:Math.round(Math.random() *1000) }, 
 
        { name:'西藏',value:Math.round(Math.random() *1000) }, 
 
        { name:'四川',value:Math.round(Math.random() *1000) }, 

        { name:'宁夏',value:Math.round(Math.random() *1000) }, 
 
        { name:'香港',value:Math.round(Math.random() *1000) }, 
        { name:'澳门',value:Math.round(Math.random() *1000) } 
 
      ] 
 
    }, 
 
    { 
 
      name:'iphone5', 
 
      type:'map', 
 
      mapType:'china', 
 
      selectedMode: 'single', 
 
      itemStyle: { 
 
        normal: { label: { show:true },color:'#da70d6' },// for legend 
 
        emphasis: { label: { show:true} } 
 
      }, 
 
      data: [ 
 
        { name:'北京',value:Math.round(Math.random() *1000) }, 
 
        { name:'天津',value:Math.round(Math.random() *1000) }, 
 
        { name:'上海',value:Math.round(Math.random() *1000) }, 
 
        { name:'广东',value:Math.round(Math.random() *1000) }, 
 
        { name:'台湾',value:Math.round(Math.random() *1000) }, 
 
        { name:'香港',value:Math.round(Math.random() *1000) }, 
 
        { name:'澳门',value:Math.round(Math.random() *1000) } 
 
      ] 
 
    } 
  ] 
      }; 
       //以下的这段代码主要是用来处理用户的选择,应用场景是可以做地图的交互,比如点击地图上的某一个省,获取相应的省的指标变化等。 
       //需要特别注意的是,如果需要点击某一省作地图的操作交互的话,还需要为series属性的每一项添加一个selectedMode属性,这里的属性值为 'single'即单选,也可多选 
  varecConfig= require('echarts/config'); 
      myChart.on(ecConfig.EVENT.MAP_SELECTED,function (param) { 
        varselected=param.selected; 
        varmapSeries=option.series[0]; 
        vardata= []; 
        varlegendData= []; 
        varname; 
        for (varp=0,len=mapSeries.data.length; p<len; p++) { 
          name=mapSeries.data[p].name; 
          mapSeries.data[p].selected=selected[name]; 
          if (selected[name]) { 
            alert(name); //这里只是简单的做一个事例说明,弹出用户所选的省,如需做其他的扩展,可以在这里边添加相应的操作  
 
          } 
        } 
      });         
      myChart.setOption(option); 
    } 
  ); 
  </script>

完成以上操作之后,效果如下图所示:

echart简介_动力节点Java学院整理 

LineChart

除了地图图表之外的其他的图标的使用方式都差不多。事实上其他的图表跟地图图表的区别在于对配置文件的引用。这里只做一个折线图的示例,其它的示例都是一样的。

<scripttype="text/javascript"> 
 
    require.config({ 
 
      paths: { 
 
        echarts:'./echarts/echarts', 
 
        'echarts/chart/bar':'./echarts/echarts',//这里需要注意的是除了mapchart使用的配置文件为echarts-map之外, 
其他的图形引用的配置文件都为echarts,这也是一般的图形跟地图的区别 
 
        'echarts/chart/line':'./echarts/echarts' 
 
      } 
 
    }); 
 
    require( 
 
    [ 
 
      'echarts', 
 
      'echarts/chart/bar', 
 
      'echarts/chart/line' 
 
    ], 
 
    function (ec) { 
 
      varmyChart=ecinit(documentgetElementById('main')); 
 
      option= { 
 
        tooltip: { 
 
          trigger:'axis' 
 
        }, 
 
        legend: { 
 
          data: ['邮件营销','联盟广告','视频广告','直接问','搜索引擎'] 
 
        }, 
 
        toolbox: { 
 
          show:true, 
 
          feature: { 
 
            mark:true, 
 
            dataView: { readOnly:false }, 
 
            magicType: ['line','bar'], 
 
            restore:true, 
 
            saveAsImage:true 
 
          } 
 
        }, 
 
        calculable:true, 
 
        xAxis: [ 
 
    { 
 
      type:'category', 
 
      boundaryGap:false, 
 
      data: ['周一','周二','周三','周四','周五','周六','周日'] 
 
    } 
 
  ], 
 
        yAxis: [ 
 
    { 
 
      type:'value', 
 
      splitArea: { show:true } 
 
    } 
 
  ], 
 
        series: [ 
 
    { 
 
      name:'邮件营销', 
 
      type:'line', 
 
      stack:'总量', 
 
      data: [120,132,101,134,90,230,210] 
 
    }, 
 
    { 
 
      name:'联盟广告', 
 
      type:'line', 
 
      stack:'总量', 
 
      data: [220,182,191,234,290,330,310] 
 
    }, 
 
    { 
 
      name:'视频广告', 
 
      type:'line', 
 
      stack:'总量', 
 
      data: [150,232,201,154,190,330,410] 
 
    }, 
 
    { 
 
      name:'直接访问', 
 
      type:'line', 
 
      stack:'总量', 
 
      data: [320,332,301,334,390,330,320] 
 
    }, 
 
    { 
 
      name:'搜索引擎', 
 
      type:'line', 
 
      stack:'总量', 
 
      data: [820,932,901,934,1290,1330,1320] 
 
    } 
 
  ] 
 
      };           
 
  
 
      myChart.setOption(option); 
 
    } 
 
  ); 
 
  </script> 
 
  
 
  
 
  <divid="main1"style="height:500px;border:1px solid #ccc;padding:10px;"></div>   
 
  <scripttype="text/javascript"> 
 
    require.config({ 
 
      paths: { 
 
        echarts:'./echarts/echarts', 
 
        'echarts/chart/bar':'./echarts/echarts', 
 
        'echarts/chart/line':'./echarts/echarts' 
 
      } 
 
    }); 
 
    require( 
 
    [ 
 
      'echarts', 
 
      'echarts/chart/bar', 
 
      'echarts/chart/line' 
 
    ], 
 
    function (ec) { 
 
      varmyChart=ecinit(documentgetElementById('main1')); 
 
      option= { 
 
        title: { 
 
          text:'未来一周气温变化', 
 
          subtext:'纯属虚构' 
 
        }, 
 
        tooltip: { 
 
          trigger:'axis' 
 
        }, 
 
        legend: { 
 
          data: ['最高气温'最低气温'] 
 
        }, 
 
        toolbox: { 
 
          show:true, 
 
          feature: { 
 
            mark:true, 
 
            dataView: { readOnly:false }, 
 
            magicType: ['line','bar'], 
 
            restore:true, 
 
            saveAsImage:true 
 
          } 
 
        }, 
 
        calculable:true, 
 
        xAxis: [ 
 
    { 
 
      type:'category', 
 
      boundaryGap:false, 
 
      data: ['周一','周二','周三','周四','周五','周六','周日'] 
 
    } 
 
  ], 
 
        yAxis: [ 
 
    { 
 
      type:'value', 
 
      axisLabel: { 
 
        formatter:'{value} ' 
 
      }, 
 
      splitArea: { show:true } 
 
    } 
 
  ], 
 
        series: [ 
 
    { 
 
      name:'最高气温', 
 
      type:'line', 
 
      itemStyle: { 
 
        normal: { 
 
          lineStyle: { 
 
            shadowColor:'rgba(0,0,0,4)' 
 
          } 
 
        } 
 
      }, 
 
      data: [11,11,15,13,12,13,10] 
 
    }, 
 
    { 
 
      name:'最低气温', 
 
      type:'line', 
 
      itemStyle: { 
 
        normal: { 
 
          lineStyle: { 
 
            shadowColor:'rgba(0,0,0,4)' 
 
          } 
 
        } 
 
      }, 
 
      data: [-2,1,2,5,3,2,0] 
 
    } 
 
  ] 
 
      };           
 
      myChart.setOption(option); 
 
    } 
 
  ); 
 
  </script> 
 
  
 
  
 
  <divid="main2"style="height:500px;border:1px solid #ccc;padding:10px;"></div>   
 
  <scripttype="text/javascript"> 
 
    require.config({ 
 
      paths: { 
 
        echarts:'./echarts/echarts', 
 
        'echarts/chart/bar':'./echarts/echarts', 
 
        'echarts/chart/line':'./echarts/echarts' 
 
      } 
 
    }); 
 
    require( 
 
    [ 
 
      'echarts', 
 
      'echarts/chart/bar', 
 
      'echarts/chart/line' 
 
    ], 
 
    function (ec) { 
 
      varmyChart=ec.init(document.getElementById('main2')); 
 
      option= { 
 
        title: { 
 
          text:'某楼盘销售情况', 
 
          subtext:'纯属虚构' 
 
        }, 
 
        tooltip: { 
 
          trigger:'axis' 
 
        }, 
 
        legend: { 
 
          data: ['意向','预购','成交'] 
 
        }, 
 
        toolbox: { 
 
          show:true, 
 
          feature: { 
 
            mark:true, 
 
            dataView: { readOnly:false }, 
 
            magicType: ['line','bar'], 
 
            restore:true, 
 
            saveAsImage:true 
 
          } 
 
        }, 
 
        calculable:true, 
 
        xAxis: [ 
 
    { 
 
      type:'category', 
 
      boundaryGap:false, 
 
      data: ['周','周二','周三','周四','周五','周六','周日'] 
 
    } 
 
  ], 
 
        yAxis: [ 
 
    { 
 
      type:'value' 
 
    } 
 
  ], 
 
        series: [ 
 
    { 
 
      name:'成交', 
 
      type:'line', 
 
      smooth:true, 
 
      itemStyle: { normal: { areaStyle: { type:'default'}} }, 
 
      data: [10,12,21,54,260,830,710] 
 
    }, 
 
    { 
 
      name:'预购', 
 
      type:'line', 
 
      smooth:true, 
 
      itemStyle: { normal: { areaStyle: { type:'default'}} }, 
 
      data: [30,182,434,791,390,30,10] 
 
    }, 
 
    { 
 
      name:'意向', 
 
      type:'line', 
 
      smooth:true, 
 
      itemStyle: { normal: { areaStyle: { type:'default'}} }, 
 
      data: [1320,1132,601,234,120,90,20] 
 
    } 
 
  ] 
 
      };           
 
      myChart.setOption(option); 
 
    } 
 
  ); 
 
  </script>

完成以上操作之后效果图如下:

 echart简介_动力节点Java学院整理

Javascript 相关文章推荐
jQuery AnythingSlider滑动效果插件
Feb 07 Javascript
jQuery中 noConflict() 方法使用
Apr 25 Javascript
验证控件与Button的OnClientClick事件详细解析
Dec 04 Javascript
js打造数组转json函数
Jan 14 Javascript
Javascript基础教程之函数对象和属性
Jan 18 Javascript
js小数运算出现多位小数如何解决
Oct 08 Javascript
Node.js中使用socket创建私聊和公聊聊天室
Nov 19 Javascript
javascript产生随机数方法汇总
Jan 25 Javascript
sso跨域写cookie的一段js脚本(推荐)
May 25 Javascript
Angular.Js的自动化测试详解
Dec 09 Javascript
jQuery实现优雅的弹窗效果(6)
Feb 08 Javascript
node.js利用socket.io实现多人在线匹配联机五子棋
May 31 Javascript
Javascript中this关键字指向问题的测试与详解
Aug 11 #Javascript
使用JS编写的随机抽取号码的小程序
Aug 11 #Javascript
javascript简写常用的12个技巧(可以大大减少你的js代码量)
Mar 28 #Javascript
Mobile Web开发基础之四--处理手机设备的横竖屏问题
Aug 11 #Javascript
Vue.js仿微信聊天窗口展示组件功能
Aug 11 #Javascript
Node.js服务器开启Gzip压缩教程
Aug 11 #Javascript
JS SetInterval 代码实现页面轮询
Aug 11 #Javascript
You might like
discuz authcode 经典php加密解密函数解析
2020/07/12 PHP
php文件上传表单摘自drupal的代码
2011/02/15 PHP
php Smarty 字符比较代码
2011/02/27 PHP
使用Apache的htaccess防止图片被盗链的解决方法
2013/04/27 PHP
使用php将某个目录下面的所有文件罗列出来的方法详解
2013/06/21 PHP
关于PHP的curl开启问题探讨
2014/04/08 PHP
php处理复杂xml数据示例
2016/07/11 PHP
PHP面向对象程序设计类的定义与用法简单示例
2016/12/27 PHP
jquery监控数据是否变化(修正版)
2011/04/12 Javascript
JavaScript事件委托技术实例分析
2015/02/06 Javascript
用svg制作富有动态的tooltip
2015/07/17 Javascript
JS实现从网页顶部掉下弹出层效果的方法
2015/08/06 Javascript
JavaScript中利用各种循环进行遍历的方式总结
2015/11/10 Javascript
JavaScript实现给定时间相加天数的方法
2016/01/25 Javascript
JS实现重新加载当前页面
2016/11/29 Javascript
Vue-Router实现页面正在加载特效方法示例
2017/02/12 Javascript
微信小程序使用audio组件播放音乐功能示例【附源码下载】
2017/12/08 Javascript
浅析Vue 生命周期
2018/06/21 Javascript
JS数组进阶示例【数组的几种函数用法】
2020/01/16 Javascript
js布局实现单选按钮控件
2020/01/17 Javascript
vue如何实现动态加载脚本
2020/02/05 Javascript
Vue仿Bibibili首页的问题
2021/01/21 Vue.js
[01:03:27]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python中的lstrip()方法使用简介
2015/05/19 Python
让Python代码更快运行的5种方法
2015/06/21 Python
200 行python 代码实现 2048 游戏
2018/01/12 Python
python matplotlib实现双Y轴的实例
2019/02/12 Python
python安装scipy的方法步骤
2019/06/26 Python
Python求区间正整数内所有素数之和的方法实例
2020/10/13 Python
python利用opencv实现颜色检测
2021/02/23 Python
高街生活方式全球在线商店:AZBRO
2017/08/26 全球购物
中职生自荐信
2013/10/13 职场文书
小班秋游活动方案
2014/02/22 职场文书
开工仪式主持词
2014/03/20 职场文书
滴水洞导游词
2015/02/10 职场文书
2015年招生工作总结
2015/05/04 职场文书