一.前言。
众所周知,在现今的开发大环境下,数据可视化(大屏化)项目在前端开发中的比重越来越大。而其中使用率最高的插件无疑就是 Apache Echarts 。(ps: 以下简称为echarts)。本文就结合vue框架来讲解如何快速、高效、优雅地在项目中使用echarts。当然,本文篇幅也会为读者精心准备目前网络上最全面、最高效 的echarts案例资源站集合 。
二. 全网最全的echarts图表案例和实例资源站整理。
资源一:分享你我 (推荐指数:⭐⭐⭐⭐)
优点:案例资源丰富,有主体分类,可检索,访问速度较快。 缺点:未做分页。
资源二:ISWWQ.com (推荐指数:⭐⭐⭐⭐)
优点:案例资源丰富,可检索,有主体分类。 缺点:未做分页,访问速度较慢。
资源三:PPChart (推荐指数:⭐⭐⭐⭐⭐ )
优点:案例资源丰富,有主体分类且分类较细,有分页,可检索,访问速度较快。 缺点:暂无。
资源四:ECHARTS社区 (推荐指数:⭐⭐⭐)
优点:案例资源丰富,有主体分类且分类较细,有分页,可检索,提供登录和社区。 缺点:访问速度慢,有广告。
资源五:Made A Pie (推荐指数:⭐⭐⭐⭐)
优点:案例资源丰富,可检索,有主体分类。 缺点:访问速度较慢,未做分页。
资源六:MCChart (推荐指数:⭐⭐⭐⭐)
优点:案例资源丰富,可检索,有主体分类。 缺点:详情图例加载慢,图例加载不出。
资源七:ECharts官方案例 (推荐指数:⭐⭐⭐⭐⭐ )
优点:官方案例,资源稳定,主体分类多,可调节模式,可直接查看对应案例的配置项。 缺点:案例资源较少,未做分页,未提供检索。
资源八:chartsdev.com (推荐指数:⭐⭐)
优点:案例资源丰富,有主体分类。 缺点:访问速度一般,未能开箱即用,排版较差,适用性较差等。
资源九:[仿ECharts] (推荐指数:⭐⭐⭐)
优点:资源较稳定,图标效果加载速度较快。 缺点:案例资源较少,未做分页,未提供检索等。
资源十:DataInsight (推荐指数:⭐⭐)
优点:案例资源较丰富。 缺点:访问速度慢,未做主体分类,未提供检索等。
资源十一:阿里云--原ECharts官方社区Make A Pie案例源码及图表图 (推荐指数:⭐⭐⭐⭐⭐ )
优点:提供原ECharts官方社区Make A Pie网站的所有案例源码及其对应的图例,可供查阅与开发成共享资源社区或网站。 缺点:未实现开箱即用。 说明:提取码:6l3t 。
资源十二:百度云--原ECharts官方社区Make A Pie案例源码及图表图 (推荐指数:⭐⭐⭐⭐⭐ )
优点:提供原ECharts官方社区Make A Pie网站的所有案例源码及其对应的图例,可供查阅与开发成共享资源社区或网站。 缺点:未实现开箱即用。 说明:提取码:qqsy 。
三.echarts在vue项目中的使用说明和技巧。
安装依赖和注意事项及对应的处理办法。
npm install echarts --save
npm uninstall echarts --save
npm install echarts@4.8 .0 --save 复制代码
组件化实现每个echarts图表的独立管理,避免不必要的耦合。
父组件:
class=“p-section bg” > <div class =“p-title” > 业务类型占比div > <ywlxzbChart > ywlxzbChart >
复制代码
子组件(echarts图表核心):
<div
id ="ywlx"
style ="width: 100%; height: 195px"
v-loading ="ywlezbLoading"
> div >
<script >
import echarts from "echarts" ;
import * as API from "api/home.js" ;
export default {
data ( ) {
return {
ywlezbLoading : false ,
myChartLine : null ,
formData : [],
nameData : [],
};
},
name : "ywlxzbChart" ,
methods : {
getProfessionalCardsCount ( ) {
return new Promise ((resolve, reject ) => {
this .ywlezbLoading = true ;
API .getProfessionalCardsCount ()
.then ((res ) => {
this .ywlezbLoading = false ;
if (res.code == 200 ) {
this .formData = res.data .professions ;
this .nameData = [];
this .formData .map ((i ) => {
this .nameData .push (i.name );
});
}
resolve (res);
})
.catch ((err ) => {
this .ywlezbLoading = false ;
reject (err);
});
});
},
myEcharts ( ) {
this .myChartLine = echarts.init (document .getElementById ("ywlx" ));
var option = {
tooltip : {
trigger : "item" ,
formatter : "{a} {b} : {c} ({d}%)" ,
},
color : ["#31ceee" , "#20adeb" , "#6be7e8" ],
legend : {
orient : "vertical" ,
x : "right" ,
align : "left" ,
padding : [10 , 5 , 0 , 0 ],
data : this .nameData ,
formatter : function (name ) {
var oa = option.series [0 ].data ;
var num = oa[0 ].value + oa[1 ].value + oa[2 ].value ;
for (var i = 0 ; i < option.series [0 ].data .length ; i++) {
if (name == oa[i].name ) {
return name;
}
}
},
},
series : [
{
name : "业务类型占比" ,
type : "pie" ,
radius : "68%" ,
center : ["40%" , "50%" ],
data : this .formData ,
itemStyle : {
normal : {
label : {
show : true ,
formatter : "{b}: {d}%" ,
},
},
labelLine : { show : true },
},
labelLine : {
normal : {
length : 1 ,
},
},
},
],
};
this .myChartLine .setOption (option);
},
},
mounted ( ) {
window .addEventListener ("resize" , () => {
if (this .myChartLine ) {
this .myChartLine .resize ();
}
});
this .getProfessionalCardsCount ().then ((res ) => {
this .myEcharts ();
});
},
beforeDestroy ( ) {
if (!this .myChartLine ) {
return ;
}
this .myChartLine .dispose ();
this .myChartLine = null ;
},
};
script >
<style >
style >
复制代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
将echarts图表的 数据 和 绘制 分为两部分各自处理,一目了然,层次分明。 真实图表绘制操作务必放在数据请求赋值之后操作 ;为了确保执行准确性和可靠性,这里借助了Promise 来实现。组件销毁时要重置(销毁)图表。 为了提高用户体验感,强烈建议为图表容器加上loading状态。