Echarts 解决饼图文字过长重叠的问题

最近一直在使用echarts开发一些可视化的页面,昨天遇到了一些由于可展示区域过小,导致指示线的文字会重叠的问题。进行记录。

修改前问题:
在这里插入图片描述
修改方法:

  • series下的avoidLabelOverlap修改为true(是否启用防止标签重叠策略)
  • 设置最小扇区角度,minAngle(最小的扇区角度(0 ~ 360)
  • 调整指示线文字的显示大小
series: [
          {
            name: '省份',
            type: 'pie',
            radius: ['40%', '60%'], // 半径
            center: ['40%', '54%'], // 位置
            minAngle: 5,
            avoidLabelOverlap: true,
            label: {
              normal: {
                formatter: '{d}%',
                textStyle: {
                  fontWeight: 'normal',
                  fontSize: 12
                }
              }
            }
          }
        ]

如果出现指示线文字过长,还可以对其进行截字处理。
通过formatter(标签内容格式器,支持字符串模板和回调函数两种形式,字符串模板与回调函数返回的字符串均支持用 \n 换行) 属性。


series: [
          {
            name: '省份',
            type: 'pie',
            radius: ['40%', '60%'], // 半径
            center: ['40%', '54%'], // 位置
            minAngle: 5,
            avoidLabelOverlap: true,
            label: {
              normal: {
                textStyle: {
                  fontWeight: 'normal',
                  fontSize: 12
                },
				formatter(v) {
                     let text = Math.round(v.percent)+'%' + '' + v.name
                     if(text.length <= 8)
                     {
                         return text;
                     }else if(text.length > 8 && text.length <= 16){
                         return text = `${text.slice(0,8)}\n${text.slice(8)}`
                     }else if(text.length > 16 && text.length <= 24){
                         return text = `${text.slice(0,8)}\n${text.slice(8,16)}\n${text.slice(16)}`
                     }else if(text.length > 24 && text.length <= 30){
                         return text = `${text.slice(0,8)}\n${text.slice(8,16)}\n${text.slice(16,24)}\n${text.slice(24)}`
                     }else if(text.length > 30){
                         return text = `${text.slice(0,8)}\n${text.slice(8,16)}\n${text.slice(16,24)}\n${text.slice(24,30)}\n${text.slice(30)}`
                     }
                 }
              }
            }
          }
        ]

改造后:
在这里插入图片描述

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值