之前做过柱形图和折线图,被前任引入的旧版本文件坑不少,再次做的时候都有些遗忘,趁项目不急的时候总结一下~
一、非模块化——单文件引入:
1、首先毫无疑问通过script标签引入echarts文件,官网http://echarts.baidu.com/echarts2/index.html可以下载
2、通过官网的例子结合实际补充说明
1 // srcipt标签式引入 2 var myChart = echarts.init(document.getElementById('main')); 3 4 // 过渡--------------------- 5 myChart.showLoading({ 6 text: '正在努力的读取数据中...', //loading话术 7 }); 8 9 // ajax getting data............... 10 11 // ajax callback 12 myChart.hideLoading(); 13 14 // 图表使用------------------- 15 var option = { 16 legend: { // 图例配置 17 padding: 5, // 图例内边距,单位px,默认上下左右内边距为5 18 itemGap: 10, // Legend各个item之间的间隔,横向布局时为水平间隔,纵向布局时为纵向间隔 19 data: ['ios', 'android'] 20 }, 21 tooltip: { // 气泡提示配置 22 trigger: 'item', // 触发类型,默认数据触发,可选为:'axis' 23 }, 24 xAxis: [ // 直角坐标系中横轴数组 25 { 26 type: 'category', // 坐标轴类型,横轴默认为类目轴,数值轴则参考yAxis说明 27 data: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] 28 } 29 ], 30 yAxis: [ // 直角坐标系中纵轴数组 31 { 32 type: 'value', // 坐标轴类型,纵轴默认为数值轴,类目轴则参考xAxis说明 33 boundaryGap: [0.1, 0.1], // 坐标轴两端空白策略,数组内数值代表百分比 34 splitNumber: 4 // 数值轴用,分割段数,默认为5 35 } 36 ], 37 series: [ 38 { 39 name: 'ios', // 系列名称 40 type: 'line', // 图表类型,折线图line、散点图scatter、柱状图bar、饼图pie、雷达图radar 41 data: [112, 23, 45, 56, 233, 343, 454, 89, 343, 123, 45, 123] 42 }, 43 { 44 name: 'android', // 系列名称 45 type: 'line', // 图表类型,折线图line、散点图scatter、柱状图bar、饼图pie、雷达图radar 46 data: [45, 123, 145, 526, 233, 343, 44, 829, 33, 123, 45, 13] 47 } 48 ] 49 }; 50 myChart.setOption(option); 51 52 ... 53 54 // 增加些数据------------------ 55 option.legend.data.push('win'); 56 option.series.push({ 57 name: 'win', // 系列名称 58 type: 'line', // 图表类型,折线图line、散点图scatter、柱状图bar、饼图pie、雷达图radar 59 data: [112, 23, 45, 56, 233, 343, 454, 89, 343, 123, 45, 123] 60 }); 61 myChart.setOption(option); 62 63 ... 64 65 // 图表清空------------------- 66 myChart.clear(); 67 68 // 图表释放------------------- 69 myChart.dispose();
legend:图例,每个图表最多仅有一个图例,下图中顶部中间
toolbox:工具箱,每个图表最多仅有一个工具箱,下图中顶部最右边
xAxis:横轴数组
yAxis:纵轴数组 axisLine是数组中通用属性 [{axisLine:{ *** }}]
3、API说明
http://echarts.baidu.com/echarts2/doc/doc.html#AxisAxisline
二、模块化包引入:
通过require引入,这里说一下require的使用背景
实现JS文件文件的异步加载,避免网页失去响应 |
管理模块之间的依赖性,便于代码的编写和维护 |
引入require考虑到加载时长,可以放到网页底部,也可以用async属性,IE不支持,只支持defer,如下写就可以(data-main指定网页程序主模块,若主模块依赖于其他模块,需要使用AMD规范定义的的defer()函数)
<script src="js/require.js" defer async="true" data-main="js/main" ></script> // main.js require(['moduleA', 'moduleB', 'moduleC'], function (moduleA, moduleB, moduleC){ // some code here });
下面是echarts官网上的引入的例子:
//from echarts example require.config({ packages: [ { name: 'echarts', location: '../../src', main: 'echarts' }, { name: 'zrender', location: '../../../zrender/src', // zrender与echarts在同一级目录 main: 'zrender' } ] });