刚工做半年,第一次接到绘制饼图、柱形图的需求,对未知的事物多少都会有恐惧。因而请教大神,大神直接甩了vue-echarts的文档和echarts的文档给我,说一看就会,然而……一上来仍是有点懵,有必要记录一下。html
根据echarts的官方文档,画一个图标要先新建一个容器,而后再JS中经过getElementById获取这个容器,这是最原始的JS和html交互,不符合常用vue开发的同窗的使用习惯。因而vue-echarts把echarts获取元素的代码封装了一下,变成一个组件,平均每一个图可让咱们少写十行左右代码。vue-echarts最主要的就是完成这个使命,剩下的图表配置项咱们要自行学会看echarts的文档。前端
首先,咱们先看一下原生Echarts是如何建立容器的 --> 5 分钟上手 EChartsvue
npm install echarts vue-echarts
git
<template> <v-chart :options="polar"/> </template> <style> /** * 默认尺寸为 600px×400px,若是想让图表响应尺寸变化,能够像下面这样 * 把尺寸设为百分比值(同时请记得为容器设置尺寸)。 */ .echarts { width: 100%; height: 100%; } </style> <script> import ECharts from 'vue-echarts' import 'echarts/lib/chart/line' //绘制不一样的图表要引入不一样的chart和component import 'echarts/lib/component/polar' export default { components: { 'v-chart': ECharts }, data () { return { polar: { // 指定图表的配置项和数据 } } } } </script>
接下来,咱们须要对Echarts的基础概念有一个大概的印象 --> ECharts 基础概念概览github
根据Echarts官方给的实例,找到本身想作的相似的图表,熟悉基础概念 --> 官方实例apache
以下图所示,侧边栏能够选择大类,这里有最经常使用的饼图、柱状图等,点击效果图能够进入代码页。npm
若是按上面的步骤一步步来,到这一步,咱们内心都有个大体的谱了。接下来,咱们须要根据Echarts的配置项来自定义实现,UI设计稿 --> 配置项echarts
看到这么多配置项,是否是又晕了?这个tooltip是显示在哪的,这个grid又是干吗用的?这时,咱们再回来看一下基础概念的图:学习
我又能够了。字体
刚开始接触Echarts,确定会有不少奇奇怪怪的问题,怎么这个图这么不听话,溢出界面了?怎么这些数据堆在一块儿?好难看哦。这时没有捷径,咱们只能慢慢摸索慢慢调试,耐心一点,很快就能够获得好看的图啦~
下面列举一个我遇到的比较难实现的设计稿:
这里有两个难点:
一开始拿到这个图,个人心里OS:好看是好看,可是这个真的能够实现吗?第一次发版时我只是把数据丑丑地放在那,反正也不影响主要功能。后来有一天我没有需求,看着Echarts的官方实例,忽然有了灵感。
这里主要用到两个配置:
pieOption: { grid: { left: 'center', top: 40, containLabel: true }, color: ['#8676F8', '#99CDFD', '#3FE8BD', '#FA9DA6'], series: [ { type: 'pie', radius: '48%', // radius: [20, 70], data: [ { name: '威胁人数>1000人'}, { name: '威胁人数<10人'}, { name: '威胁人数>10人'}, { name: '威胁人数>100人'}, ], label: { lineHeight: 15, formatter: function(params) { var type var style switch(params.name) { case '威胁人数>1000人': type='特大型'; style='xl'; break; case '威胁人数>100人': type = '大型'; style='l'; break; case '威胁人数>10人': type = '中型'; style='m'; break; case '威胁人数<10人': type = '小型'; style='s' break; } return params.name + '\n' + '{' + style + '|' + type + ': ' + params.value + '处}' }, rich: { xl: { color: '#FFFFFF', backgroundColor: '#8676F8', padding: [2, 4], borderRadius: 2 }, l: { color: '#FFFFFF', backgroundColor: '#FA9DA6', padding: [2, 4], borderRadius: 2 }, m: { color: '#FFFFFF', backgroundColor: '#3FE8BD', padding: [2, 4], borderRadius: 2 }, s: { color: '#FFFFFF', backgroundColor: '#99CDFD', padding: [2, 4], borderRadius: 2 } } } } ] },
当当当~最终实现样式
文章到这里就结束啦~前端小白菜,可能写的内容也不深,请大神们多多指教鸭。