实现效果

难题1 中间换行 \n
解决方法formatter:“{a}\n{c}”

难题2 中间设置不同的样式
解决方法

     emphasis: {label: {formatter: (param) => {let info = param.data;let str = `{count|${info.value}}\n{train|${info.name}}`; //这里对不同的内容进行标识 a,b,或者可以随便自己起个别的名字return str;},rich: { //在rich中对两个标识进行样式修改count: {fontSize: 24},train: {fontSize: 12,opacity: 0.6}},show: true,fontSize: '24',fontFamily: 'PangMenZhengDao',color: '#B0E1FF',}},

难题3 设置与原本不同的颜色
解决方法 itemStyle

itemStyle: {color: param => param.data.color // color自己定义的字段}

难题4左侧与默认不一样 自定义文字
解决方法
参考链接https://blog.csdn.net/YPJMFC/article/details/78979319

 // 总揽legend: {orient: 'vertical',right: 11,top: 0,itemWidth: 9,itemHeight: 3,itemGap: 12, // 修改间距textStyle: {color: '#B0E1FF', fontSize: 16,rich: { //在rich中对两个标识进行样式修改train: {opacity: 0.8,padding: [0, 16, 0, 8], // 修改文字和图标距离},rate: {fontWeight: 'bold'}},},formatter: (name:string) => {var rate;for (var i = 0; i < this.errorData.length; i++) {if (this.errorData[i].name === name) {rate = this.errorData[i].rate;}}var arr = ['{train|'+name+'}{rate|'+(rate*100).toFixed(2)+'%}']return arr.join('\n')},},

难题5 想要实现中间总是显示(总数)的功能
解决办法一:
需要绑定鼠标滑入和滑出 动态的设置title的内容
借鉴 https://blog.csdn.net/Kiruthika/article/details/124442303

 private mouseover (){(this.$refs.echarts as Echarts).chart.setOption({title: {text: ""}})}private mouseout (){(this.$refs.echarts as Echarts).chart.setOption({title: {text: this.total}})}

因为第一种方法 有些时候会导致不局中
解决办法二:(推荐)
不使用title设置,直接使用label设置,但是在这个过程中遇到一个问题就是 饼图 label 居中的时候会重叠

     label: {show: true,position: 'center',formatter: () => {return this.total},textStyle: {color: '#B0E1FF',fontSize: 24,fontWeight: 600}},

后来想到使用echarts的事件监听 设置label。成功解决

 <echartsref="echarts":option="option"@mouseover="mouseover"@mouseout="mouseout"/>private mouseover (params:any) {(this.$refs.echarts as Echarts).chart.setOption({series: {label:{show: false}}});}private mouseout () {(this.$refs.echarts as Echarts).chart.setOption({series: {label:{show: true}}});}

以上总代码

private get option(): ECOption|any {return {title: {show:false// show: true,// text: this.total || '',// 具体放置位置// left: "20%",// top: "center",// textStyle: {//  color: '#B0E1FF', //  fontSize: 24,//   fontWeight: 600,//  },},// 总揽legend: {orient: 'vertical',right: '5%',top: 0,itemWidth: 9,itemHeight: 3,itemGap: 12, // 修改间距textStyle: {color: '#B0E1FF', fontSize: 16,rich: { //在rich中对两个标识进行样式修改train: {opacity: 0.8,padding: [0, 16, 0, 8], // 修改文字和图标距离},rate: {fontWeight: 'bold'}},},formatter: (name:string) => {let rate = this.errorData.filter(item=>item.name === name)[0].ratelet arr = ['{train|'+name+'}{rate|'+(rate*100).toFixed(2)+'%}']return arr.join('\n')},},// 饼状图series: [{type: 'pie',radius: ['60%', '90%'], // 外/内大小center: ['25%', '50%'], // 距离左/上 的距离avoidLabelOverlap: false,// label: {//  show: false,//  position: 'center',//  },label: {show: true,position: 'center',formatter: () => {return this.total},textStyle: {color: '#B0E1FF',fontSize: 24,fontWeight: 600}},emphasis: {label: {formatter: (param) => {let info = param.data;let str = `{count|${info.value}}\n{train|${info.name}}`; //这里对不同的内容进行标识 a,b,或者可以随便自己起个别的名字return str;},rich: { //在rich中对两个标识进行样式修改count: {fontSize: 24},train: {fontSize: 12,opacity: 0.5}},show: true,fontSize: '24',fontFamily: 'PangMenZhengDao',color: '#B0E1FF',}},labelLine: {show: false},data: this.errorData,itemStyle: {color: param => param.data.color}}]};}private get total():number{return this.data[this.activeTab].reduce((total,cur)=>{return cur['faults_count'] + total;},0)}private get errorData(){if(this.data[this.activeTab]){return this.data[this.activeTab].map((item,index)=>{return {value: item.faults_count,name: item.train_number,rate: item.faults_rate,color: this.defaultColorArray[index],icon: 'rect'}})}}private mouseover (params:any) {(this.$refs.echarts as Echarts).chart.setOption({series: {label:{show: false}}});}private mouseout () {(this.$refs.echarts as Echarts).chart.setOption({series: {label:{show: true}}});}

在组件中

const events = ['legendselectchanged','legendselected','legendunselected','legendscroll','datazoom','datarangeselected','timelinechanged','timelineplaychanged','restore','dataviewchanged','magictypechanged','geoselectchanged','geoselected','geounselected','pieselectchanged','pieselected','pieunselected','mapselectchanged','mapselected','mapunselected','axisareaselected','focusnodeadjacency','unfocusnodeadjacency','brush','brushselected','rendered','finished','click','dblclick','mouseover','mouseout','highlight','downplay','mousemove','mousedown','mouseup','globalout','contextmenu'];events.forEach(event => {this.chart.on(event, (params:any)=>{this.$emit(event,params) // //这里的params是图表节点的数据});});

想让其取消放大的动画
hoverAnimation:false

echarts 饼状图相关推荐

  1. echarts饼状图的使用

    echarts饼状图的使用 地址:https://echarts.apache.org/zh/index.html 第一步: 通过 npm 获取 echarts, npm install echart ...

  2. ECharts饼状图lable显示Value所占百分比

    ECharts饼状图lable显示Value所占百分比以及legend显示Value所占百分比 简单的实现可以参考: export default {data() {return {}},mounte ...

  3. 去掉Echarts饼状图的引导线

    <!DOCTYPE html> <html><head><meta charset="utf-8"><title>五分钟 ...

  4. echars ajax 饼状图,echarts饼状图实现方法

    当前位置:我的异常网» Web前端 » echarts饼状图实现方法 echarts饼状图实现方法 www.myexceptions.net  网友分享于:2015-09-27  浏览:0次 echa ...

  5. echarts饼状图引导线加圆点

    实现echarts饼状图引导线加圆点实现思路: 1.首先我们在series里设置三个饼状图,设置共有的数据来防止页面交互显示错位问题 设置minAngle 最小区域扇面角度防止多个数据为0时候引导线会 ...

  6. echarts饼状图设置label的交互效果,饼状图鼠标浮上图形才显示label和视觉引导线

    echarts饼状图默认label和视觉引导线效果: 这个效果没有没有形成与用户的交互,此时添加如下设置: label: {show: false,position: 'outside'},empha ...

  7. vue+elementui+echarts饼状图内部显示百分比

    <!--饼状图--><div id="main" style="width: 400px;height: 350px;"></di ...

  8. Angular2组件与Echarts饼状图交互之饼图制作

    一.前言 1.基于ng4项目 2.组件包括:根组件app和饼状图组件echart 二.饼状图开发过程 1.添加插件 echart cnpm install echarts --save 2.创建组件 ...

  9. vue+echarts饼状图中间计算总数

    饼状图中间显示总数值,效果图如下: dom结构: <div class="chart1" ref="chart1" style="width: ...

  10. Echarts饼状图视觉引导线设置

    如何设置饼状图引导线位置 我们在使用Echarts绘制饼状图时,经常需要确定引导线位置,官网给出的示例并未明确哪些属性决定了引导方式及位置,例如: 如下外部引导线方式: 有内部引导线方式 如何设置这两 ...

最新文章

  1. 提供前进、后退功能及其他JAVASCRIPT速成秘诀
  2. web网站加速之CDN(Content Delivery Network)技术原理
  3. 偏差是什么?一文读懂偏差
  4. linux定时任务crontab 时间,shell后台定时任务时crontab的用法
  5. MySQL 空间数据库支持入门学习
  6. 同班同学20年后 身家15亿与月薪5000元的区别
  7. 企业级服务器固态硬盘,用户如何选择企业级SSD?_Intel服务器CPU_企业存储技术与评测-中关村在线...
  8. [转]C# WInForm 无框窗体移动
  9. linux 未找到wifi适配器,无线 - 重新启动后找不到WI-FI适配器
  10. CSS Hide(隐藏元素)
  11. 转:计算机核心刊物(非SCI,EI)投稿指南
  12. meta标签属性及其功能
  13. ACS高级计算机科学,2018-2019澳洲八大ACS认证学位全盘点!③
  14. sm2262en怎么量产?sm2262en量产工具,sm2263en开卡软件,sm2263en、sm2262en使用量产工具成功开卡的方法指引
  15. 如何安装使用Oracle10g
  16. 微商必备6款软件!十分好用
  17. Python2 简介
  18. 2022年度总结:反思与回顾
  19. Ubuntu16.04中文语言包下载失败原因解决问题
  20. 聚氯乙烯增韧改性研究新进展

热门文章

  1. jinja2 使用教程
  2. HP笔记本怎么进入BIOS进行U盘装系统
  3. zan php framework,zan框架入门(一)——协程
  4. STM32学习笔记——MDK新建项目
  5. 霍炬: 回应破破的桥《针对OpenSSL捐助的讨论》
  6. python pandas获取行号_python获取行号和函数名
  7. 解题-->在线OJ(八)
  8. Codeforces Round #747 (Div. 2) 个人题解
  9. 544、RabbitMQ详细入门教程系列 -【手动消费确认】 2022.09.05
  10. VS代码中文注释下有红色波浪线解决办法