echarts3 使用总结
由于项目需要自学了echarts,下面将学到的东西总结如下,如果有哪里写的不好,请批评指正
一、前期准备
1、使用echarts之前先要引入echarts.js,js可以到官网下载
2、写一个div容器用来装echarts内容,这个容器必须有高度,不然看不到内容。
3、在script中获取div容器的id,根据需要写option中的参数(也许你现在还不知道option是干嘛用的,不要着急往下看),使用setoption生成图表。
(代码如下)注:后面将不再对引入js,获取id,调用option生成图表做赘述
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <!-- 为ECharts准备一个具备大小(宽高)的Dom --> <div id="main" style="width: 600px;height:400px;"></div> <!-- 引入echarts.js --> <script src="js/echarts.js "></script> <script> 获取容器的id并赋值给变量myChart var myChart = echarts.init(document.getElementById('main')); /*用来配置参数*/ option = { } /*调用option生成图表*/ myChart.setOption(option) </script> </body> </html>
二、各种图表使用
1、柱状图代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <!-- 为ECharts准备一个具备大小(宽高)的Dom --> <div id="main" style="width: 600px;height:400px;"></div> <script src="js/echarts.js "></script> <script> var myChart = echarts.init(document.getElementById('main')); myChart.title = '坐标轴刻度与标签对齐'; option = { color: ['#3398DB'], tooltip : { trigger: 'axis', axisPointer : { // 坐标轴指示器,坐标轴触发有效 type : 'shadow' // 默认为直线,可选为:'line' | 'shadow' } }, grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, xAxis : [ { type : 'category', data : ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], axisTick: { alignWithLabel: true } } ], yAxis : [ { type : 'value' } ], series : [ { name:'直接访问', type:'bar', barWidth: '60%', data:[10, 52, 200, 334, 390, 330, 220] } ] }; myChart.setOption(option) </script> </body> </html>
运行结果
2、折线图
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <div id="pic4" style="width: 600px;height:400px;"></div> <script src="js/echarts.js"></script> <script> var myChart13 = echarts.init(document.getElementById('pic4')); var data = []; option15 = { title: { text: '曲线', }, tooltip: { trigger: 'axis', }, legend: { data:['昨日(11月8日)','今日(11月9日)'] }, grid: { left: '1%', right: '1%', bottom: '3%', containLabel: true }, toolbox: { show: false, feature: { dataZoom: { yAxisIndex: 'none' }, dataView: {readOnly: false}, magicType: {type: ['line', 'bar']}, restore: {}, saveAsImage: {} } }, color:["red","#CD3333"], xAxis: { type: 'category', boundaryGap: false, data : ['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24'] }, yAxis: { type: 'value', name: '单位(kW)', axisLabel: { formatter: '{value}' } }, series: [ { name:'昨日(11月8日)', type:'line', data:[110,106,110,110,318,119,205,256,156,309,256,306,206,356,456,486,565.45,234,156,206,126,256,150,276], }, { type:'line', name : '今日(11月9日)', data:[210,136,120,120,118,219,195,176,156,329,356,346,406.54,256,156], } ] }; myChart13.setOption(option15); </script> </body> </html>
运行结果
3、饼图
由于代码重复就不浪费地方写所有代码,直接替换(一)中的option{}就可以
option = { title : { text: '某站点用户访问来源', subtext: '纯属虚构', x:'center' }, tooltip : { trigger: 'item', formatter: "{a} <br/>{b} : {c} ({d}%)" }, legend: { orient: 'vertical', left: 'left', data: ['直接访问','邮件营销','联盟广告','视频广告','搜索引擎'] }, series : [ { name: '访问来源', type: 'pie', radius : '55%', center: ['50%', '60%'], data:[ {value:335, name:'直接访问'}, {value:310, name:'邮件营销'}, {value:234, name:'联盟广告'}, {value:135, name:'视频广告'}, {value:1548, name:'搜索引擎'} ], itemStyle: { emphasis: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } } } ] };
运行结果
4、全国地图
由于地图比较复杂,所以把全部代码展示出来
china.js可以到官网下载所有代码,在echarts/map文件夹中可以找到china.js,
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <!-- 为ECharts准备一个具备大小(宽高)的Dom --> <div id="main" style="width: 1000px;height:800px;"></div> /*<script src="node_modules/echarts/theme/shine.js"></script>*/ <script src="js/echarts.js"></script> <script src="node_modules/echarts/map/js/china.js"></script> <script type="text/javascript"> var myChart = echarts.init(document.getElementById('main'), 'shine'); function randomData() { return Math.round(Math.random()*1000); } option = { title: { text: 'iphone销量', subtext: '纯属虚构', left: 'center' }, tooltip: { trigger: 'item' }, legend: { orient: 'vertical', left: 'left', data:['iphone3','iphone4','iphone5'] }, visualMap: { min: 0, max: 2500, left: 'left', top: 'bottom', text: ['高','低'], // 文本,默认为数值文本 calculable: true }, toolbox: { show: false, orient: 'vertical', left: 'right', top: 'center', feature: { dataView: {readOnly: false}, restore: {}, saveAsImage: {} } }, series: [ { itemStyle: { normal: { color: function (params) { var colorList = [ '#C1232B', '#B5C334', '#FCCE10', '#E87C25', '#27727B', '#FE8463', '#9BCA63', '#FAD860', '#F3A43B', '#60C0DD', '#D7504B', '#C6E579', '#F4E001', '#F0805A', '#26C0C0' ]; return colorList[params.dataIndex] }, } }, name: 'iphone3', type: 'map', mapType: 'china', roam: false, label: { normal: { show: true }, emphasis: { show: true } }, data:[ {name: '北京',value: randomData() }, {name: '天津',value: randomData() }, {name: '上海',value: randomData() }, {name: '重庆',value: randomData() }, {name: '河北',value: randomData() }, {name: '河南',value: randomData() }, {name: '云南',value: randomData() }, {name: '辽宁',value: randomData() }, {name: '黑龙江',value: randomData() }, {name: '湖南',value: randomData() }, {name: '安徽',value: randomData() }, {name: '山东',value: randomData() }, {name: '新疆',value: randomData() }, {name: '江苏',value: randomData() }, {name: '浙江',value: randomData() }, {name: '江西',value: randomData() }, {name: '湖北',value: randomData() }, {name: '广西',value: randomData() }, {name: '甘肃',value: randomData() }, {name: '山西',value: randomData() }, {name: '内蒙古',value: randomData() }, {name: '陕西',value: randomData() }, {name: '吉林',value: randomData() }, {name: '福建',value: randomData() }, {name: '贵州',value: randomData() }, {name: '广东',value: randomData() }, {name: '青海',value: randomData() }, {name: '西藏',value: randomData() }, {name: '四川',value: randomData() }, {name: '宁夏',value: randomData() }, {name: '海南',value: randomData() }, {name: '台湾',value: randomData() }, {name: '香港',value: randomData() }, {name: '澳门',value: randomData() } ] } ] }; myChart.setOption(option); </script> </body> </html>
运行结果
5、城市地图(以北京为例)
beijing.js可以到官网下载所有代码,在echarts/map/province文件夹中可以找到beijing.js,其他城市的使用同样方法直接引入对应的js即可
代码
<html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> </head> <body> <div id="main" style="100%; height: 100%;"></div> </body> <script src="js/echarts.js"></script> <script src="js/map/js/province/beijing.js"></script> <script> var myChart = echarts.init(document.getElementById('main')); var option = { title: { text : '北京地图', subtext : '-。-' }, tooltip : { trigger: 'item', formatter: function(a){ return a[2]; } }, legend: { orient: 'vertical', x:'right', data:['数据名称'] }, dataRange: { min: 0, max: 1000, color:['orange','yellow'], text:['高','低'], // 文本,默认为数值文本 calculable : true }, series : [ { name: '数据名称', type: 'map', mapType: '北京', selectedMode : 'single', itemStyle:{ normal:{label:{show:true}}, 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)}, ] } ] }; myChart.setOption(option); </script> </html>
运行结果
其他图就不做赘述,官网www.echarts.baidu.com作品中有具体例子可以根据需要直接替换option中的内容即可得到想要的结果。
四、问题补充
下面补充的内容是我在用到时候遇到的,看了官网api百度搜索了很多找到,现在做总结放到这希望自己可以帮助到一些人,也为了以后自己用好找
1、图表自适应
interval:0 //设置间隔,0的时候全部显示
},
4、折线图的折线平滑显示
series: [
smooth: true,
]
5、地图移动放大缩小
oamController: { //可移动放大缩小地图
show: true,
x: 'right',
mapTypeControl: {
'china': true
}
},
6、改变地图颜色和轮廓颜色
series : [
{
itemStyle:{
normal:{
label:{show:true},
areaStyle:{color:'#c0e7fa'},//地图整体颜色
borderColor: '#fff',//地图各省轮廓颜色
borderWidth: 1,//地图各省轮廓线条粗细
},
emphasis:{label:{show:true}},
}, ]
7、为地图绑定单击事件
使用click事件时必须设置series : [clickable : true,]
myChart.on(ecConfig.EVENT.CLICK, function (param){
var tooltipList='<div class="map-sql"><p class="map-title">{b}项目<p><p class="map-p1"><img src="././img/zhuangji.png"><span>容量:20ml</span><img class="map-img1" src="././img /zongfa.png"><span>总量:40kg</span></p><p class="map-p2"><img src="././img/huangguang.png"><span>光:30kW</span></p><p class="map-p1"><img src="././img/jiance.png"><span>监测:18个</span><img class="map-img1" src="././img/dianshu.png"><span>点数:941点</span></p></div> '
if (typeof param.seriesIndex == 'undefined') {
return;
}
if (param.type == 'click') {
//获取dom对象
var results = document.getElementsByClassName('map-lig');
var objbj = document.getElementById('map-lightbj'); //北京
var objsx = document.getElementById('map-lightsx'); //山西
var objsc = document.getElementById('map-lightsc');//四川
var objjl = document.getElementById('map-lightjl');//吉林
var parm = param.name;
if(parm == '北京'){
for(var i=0;i<results.length;i++){
if(objbj == results[i]){
results[i].style.display = "block";
}else{
results[i].style.display = "none";
}
}
}else if(parm == '山西'){
for(var i=0;i<results.length;i++){
if(objsx == results[i]){
results[i].style.display = "block";
}else{
results[i].style.display = "none";
}
}
}else if(parm == '四川'){
for(var i=0;i<results.length;i++){
if(objsc == results[i]){
results[i].style.display = "block";
}else{
results[i].style.display = "none";
}
}
}
else if(parm == '吉林'){
for(var i=0;i<results.length;i++){
if(objjl == results[i]){
results[i].style.display = "block";
}else{
results[i].style.display = "none";
}
}
}
else{
for(var i=0;i<results.length;i++){
results[i].style.display = "none";
}
}
}
});
});
附加新内容见echarts3使用总结2http://www.cnblogs.com/hhw3/p/7365117.html
上述内容是参照echarts官网http://echarts.baidu.com/,若有侵权请联系,谢谢!
作者:BlancheWang
出处:http://www.cnblogs.com/hhw3
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。