// 事件处理函数
export default {props: {// 需要传递的数据data: {type: Array,default() {return [{name: '本科及以上',value: 13211},{name: '高中',value: 42111},{name: '初中及以下',value: 81711}];}}},data() {return {// echarts对象myEchart: null,// echart的optionsoptions: {}};},// 创建元素mounted() {this.init();},// 销毁destroyed() {// 销毁图表this.destroyedChart();},methods: {// 设置默认参数setDefaultOptions(data) {const color = ['#4d33d4', '#0090ff', '#ffa200'];// 默认的参数this.options = {color: color,grid: {top: '16%',bottom: '62%',left: '33%',containLabel: false},legend: {show: true,icon: 'circle',itemWidth: 12,itemHeight: 12,bottom: 60,right: 40,textStyle: {fontSize: 18,color: '#cde1ff'}},yAxis: [{type: 'category',inverse: true,axisLine: {show: false},axisTick: {show: false},axisLabel: {formatter: function (params) {const item = data[params];return `{value|${item.value}件}{percent|${item.percent}}`;},interval: 0,inside: true,textStyle: {rich: {percent:{color: '#e6f1ff',fontSize: 20,// eslint-disable-next-line no-magic-numberspadding: [15, 0, 0, 10]},value: {color: '#e6f1ff',fontSize: 20,// eslint-disable-next-line no-magic-numberspadding: [15, 0, 0, 230]}}},show: true},data: []}],xAxis: [{show: false}],series: []};},/*** @description 初始化的方法* @name init* @return {*} 无*/init() {// 更新数据this.update(this.data);},/*** @description 刷新图表* @return {*} 无*/refresh() {if (this.myEchart) {this.myEchart.resize();}},/*** @description 设置图表的数据* @name getChartData* @param {object} data 参数* @return {*} 无*/update(data) {// 先判断数据是否存在if (!Array.isArray(data)) {return false;}// 如果不存在echartsif (!this.myEchart) {// 图表对象this.myEchart = window.echarts.init(this.$refs.jsEchart);// 绑定resize 事件this.bindResizeEvent();}// 设置默认参数this.setDefaultOptions(data);// 更新数据this.updateData(data);// 清空图表this.myEchart.clear();// 生成图表this.myEchart.setOption(this.options);},// 更新数据对象updateData(data) {const color = ['#4d33d4', '#0090ff', '#ffa200'];let sum = 0;const pieSeries = [];const lineYAxis = [];// 数据处理data.forEach((v) => {sum = sum + parseInt(v.value, 0);});const lineData = [[{x: '68%',y: 71,// eslint-disable-next-line no-magic-numberssymbolSize: [10, 10],lineStyle: {color: color[0], width:2}},{x: '35%',y: 71,symbolSize: [1, 1]}],[{x: '68%',y: 101,// eslint-disable-next-line no-magic-numberssymbolSize: [10, 10],lineStyle: {color: color[1], width:2}},{x: '35%',y: 101,symbolSize: [1, 1]}],[{x: '68%',y: 131,// eslint-disable-next-line no-magic-numberssymbolSize: [10, 10],// eslint-disable-next-line no-magic-numberslineStyle: {color: color[2], width:2}},{x: '35%',y: 131,symbolSize: [1, 1]}]];// 图表option整理data.forEach((v, i) => {pieSeries.push({type: 'pie',clockWise: false,hoverAnimation: false,// eslint-disable-next-line no-magic-numbersradius: [`${65 - i * 15}%`, `${57 - i * 15}%`],center: ['35%', '50%'],label: {show: false},data: [{value: v.value,name: v.name}, {value: sum - v.value,name: '',itemStyle: {color: '#051341'}}],markLine: {silent: true,lineStyle: {normal: {type: 'solid'}},label: {normal: {position: 'start',formatter: function (par) {return par.name;}}},data: lineData}});pieSeries.push({name: '',type: 'pie',silent: true,// 顺时加载clockWise: false,z: -1,// 鼠标移入变大hoverAnimation: false,// eslint-disable-next-line no-magic-numbersradius: [`${65 - i * 15}%`, `${57 - i * 15}%`],center: ['35%', '50%'],label: {show: false},data: [{value: 10,itemStyle: {color:'#051341'}}]});// eslint-disable-next-line no-magic-numbersv.percent = sum === 0 ? '0%' : `${(parseInt(v.value, 0) / sum * 100).toFixed(1)}%`;lineYAxis.push({value: i,textStyle: {rich: {circle: {color: color[i],// eslint-disable-next-line no-magic-numberspadding: [0, 5]}}}});});this.options.yAxis[0].data = lineYAxis;this.options.series = pieSeries;},// resize 事件处理函数resizeHandler() {if (this.myEchart) {this.myEchart.resize();}},/*** @description 绑定resize 事件* @name init* @return {*} 无*/bindResizeEvent() {// 绑定resize事件window.fdGlobal.on(window, 'resize', this.resizeHandler);},// 取消事件绑定unbindResizeEvent() {// 取消绑定resize事件window.fdGlobal.off(window, 'resize', this.resizeHandler);},/*** @description 销毁图表* @name destroyedChart* @return {*} 无*/destroyedChart() {// 如果存在echartsif (this.myEchart) {// 销毁实例,销毁后实例无法再被使用。this.myEchart.dispose();this.myEchart = null;// 取消事件绑定this.unbindResizeEvent();}}}
};

echarts蚊香图相关推荐

  1. 在vue中,Echarts雷达图中indicator的点击事件,不能改变data中的值的解决方法

    在vue中,Echarts雷达图中indicator的点击事件,不能改变data中的值的解决方法 参考文章: (1)在vue中,Echarts雷达图中indicator的点击事件,不能改变data中的 ...

  2. 修改echarts环形图的牵引线及文字位置

    修改echarts环形图的牵引线及文字位置,下面代码及效果不仅如此,也包含了其它的效果哦.有问题可以留言. 根据echarts官方示例修改效果: 官方示例图: 修改效果图: 直接上代码:其它不多说. ...

  3. d3.js 教程 模仿echarts折线图

    今天我们来仿echarts折线图,这个图在echarts是折线图堆叠,但是我用d3改造成了普通的折线图,只为了大家学习(其实在简单的写一个布局就可以).废话不多说商行代码. 1 制作 Line 类 c ...

  4. html5 尾迹特效,如何设置ECharts线图的特效

    您可以使用 ECharts 线图的 effect 属性来贵线特效进行配置,可以参考示例 模拟迁徙 和 北京公交路线. 注意: 所有带有尾迹特效的图表需要单独放在一个层,也就是需要单独设置zlevel, ...

  5. echarts折线图默认显示最后一个点的数据

    echarts折线图默认显示最后一个点的数据 想要达到这种效果图如下: 如果你给折线图设置数据显示,那么要不就全部隐藏,要不就全部显示在折线上.实现指定点的显示就需要你自己去处理这个数据了. 方式有两 ...

  6. Echarts折线图的平移假动画

    Echarts折线图的平移假动画 #可视化项目中经常用图表的方式来展示数据,折线图是经常出现的,但是在echarts折线图中正常情况是通过删除数据的第一个,添加一个新数据在数组的末尾来实现动画,此动画 ...

  7. echarts折线图设置圆点_echarts 设置折线图单个数据小圆圈样式

    在使用echarts 折线图时,可能会遇到针对不同的数据显示不同的小圆点样式,经过查看echarts配置项,其中data中有一个value配置项选项,可以单独设置某一个数据的显示样式,具体使用方式如下 ...

  8. echarts 环状图中添加图片

    echarts 环状图中添加图片 由于业务需要,我们可以在饼图内加入图片.图标或文字等让单调的饼图变得美观,这里我是在环状图里添加图片. 代码如下: option = {graphic: {//图形中 ...

  9. echarts 仪表盘图展示百分比

    echarts 仪表盘图展示百分比 效果图如下: 背景图一加,效果就好看多了 代码: let myChart = echarts.getInstanceByDom(document.getElemen ...

最新文章

  1. Android Studio 第一次新建Android Gradle项目超级慢的解决方案
  2. ransac剔除误匹配matlab代码,基于APAP图像拼接算法的改进
  3. Linux下快速搭建DNS服务器
  4. HSRP冗余热备份协议
  5. 树莓派安装LibreELEC并配置红外遥控
  6. 搜狗收录域名的方法及工具
  7. 无限分类---重新排序+生成树型
  8. java键盘事件无反应_键盘事件,没反应
  9. CREO:CREO软件之零件【工具(调查/模型意图/实用工具)】、【视图(可见性/方向/模型显示/显示/窗口)】的简介及其使用方法(图文教程)之详细攻略
  10. spring4开发SpringBatch 样例 -配置文件版
  11. 酷炫的数据可视化大屏来了!满足你99%大屏需求
  12. 为什么不能在BroadcastReceiver中开启子线程
  13. 云图-CADViewerX 7.X OCX
  14. 学习云计算怎么样?未来10年云计算发展前景如何?
  15. java udp心跳机制_心跳包机制整理汇总
  16. python中loc和iloc
  17. SFR 原理分析 代码
  18. 计算两坐标点球面距离、两向量夹角及多边形面积
  19. C语言结构体指针的定义和初始化
  20. 我国大数据产业链逐渐完善 区域发展集聚效应显现

热门文章

  1. python用递归方式实现最大公约数_使用Python求解最大公约数的实现方法
  2. 离散数学·代数结构【正规子群、商群、群的同态和同构、环与域、格、布尔代数】
  3. 不用写代码,用表格居然能开发软件和APP
  4. EXCEL骨灰级玩家必备技能,学会后年薪翻倍!年轻人耗子尾汁
  5. 怎样识别图片中的文字?手机电脑都可以的
  6. xs128之OLED12864
  7. 计算机在英语课堂教学中的应用研究,现代化教学手段在英语教学中的应用研究...
  8. 刷脸支付缴费成了某些医院学校的新宠
  9. 学习记录贴:上班摸鱼做一个看lol文字直播的小工具
  10. Ubuntu设置定时任务——每10秒钟执行一次命令(修改文件权限)