解决某些情况下 ECharts 饼图多行标签重叠问题

解决某些情况下 ECharts 饼图多行标签重叠问题

对于多行标签的重叠问题,其实一直没有一个完美的解决方案。

我能在网上查到的比较全面的解决方法就是这个:https://zhuanlan.zhihu.com/p/272710806

但我的项目中某些东西是明确的:Label的行数、字体大小、数据个数(只有6个)、而且不必要做适配。

所以我就用曲线救国的方式避免了多行标签的重叠。

PS:我觉得5.0.0版本以上的 labelLayout 可能是一个更好的曲线救国方式,不过我这里是4.8.0的。

我的问题:有许多小百分比的数据,导致label重叠:

解决某些情况下 ECharts 饼图多行标签重叠问题

第一步:调整数组顺序

ECharts饼图的label方向似乎是固定的,所以先调整一下数组元素的顺序,让label可以不仅仅放在左边(我的需求是从小到大的顺序,这里暂时改回了单行label)。
效果:

解决某些情况下 ECharts 饼图多行标签重叠问题

第二步:调整数据中的labelLine.length

标签重叠是因为离得近,那我让它们离远点就好了。

解决某些情况下 ECharts 饼图多行标签重叠问题

代码:

//Chart配置文件
option: {
                tooltip: {
                    trigger: 'item'
                },
                series: [
                    {
                        //一些代码
                        //等会这里就需要修改了
                        data: [
                        ],
                        //一些代码
                        //这里就是标签,我想让它以某种样式显示两行
                        label: {
                            formatter: [
                                '{c|{c}}',
                                '{b|{b}}',
                            ].join('\n'),
                            rich: {
                                c: {
                                    color: "#00EDFF",
                                    fontSize: 17,
                                    fontFamily: 'PingFangSC-Semibold, PingFang SC',
                                    height:18,
                                    fontWeight: 600,
                                    align:"right",
                                },
                                b: {
                                    color: "#FFFFFF",
                                    height:18,
                                    fontSize: 14,
                                    fontWeight: 500,
                                },
                            },
                            //这里可以先设置全局的长度
                            labelLine:{
                                length:10,
                            }
                        },
                    }
                ]
            },
//处理下数据
//调数组顺序
let temp = arr.pop()
arr.unshift(temp)
temp = arr.pop()
arr.unshift(temp)
//改变标签线的长度(这里不一定要写死,如果有时间的话应该也可以通过一些算法算出来。我自己项目中也有更多的判断,这里删掉了。)
arr[0].labelLine = {}
arr[4].labelLine = {}
arr[5].labelLine = {}
arr[0].labelLine.length = 50,
arr[4].labelLine.length = 30,
arr[5].labelLine.length = 50,
this.option.series[0].data = res.data

结论:其实效果也不太好,而且长度都写死了,也可能会出现其它的问题。不过也算是勉勉强强完成需求了。如果哪个大佬有更好的解决方法,那就求求了!

Original: https://www.cnblogs.com/m1pha/p/16572935.html
Author: m1pha
Title: 解决某些情况下 ECharts 饼图多行标签重叠问题

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/582616/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 如何优雅的处理 accept 出现 EMFILE 的问题

    通常情况下,服务端调用 accept 函数会返回一个新的文件描述符,用于和客户端之间的数据传输 在服务器的开发中,有时会遇到这种情况:当调用 accept 函数接受客户端连接,函数…

    Linux 2023年6月13日
    090
  • mac 如何仅安装redis-cli客户端

    brew tap ringohub/redis-cli brew update && brew doctor brew install redis-cli 【注】需…

    Linux 2023年5月28日
    0114
  • Dockerfile

    Docker可以通过Dockerfile构建镜像。Dockerfile是一个文本文档,它包含用户可以在命令行上调用的所有命令来组装镜像。使用 docker build用户可以创建一…

    Linux 2023年6月13日
    085
  • 方法的深度理解

    权限修饰符 返回值类型 类名(行参列表 )throws 异常的类型{ //方法体 约定俗称:子类中叫重写的方法,父类中叫被重写的方法。 ①子类重写的方法名和行参列表和父类被重写的方…

    Linux 2023年6月14日
    097
  • 2020年12月-第02阶段-前端基础-CSS Day07

    CSS Day07 CSS高级技巧 *理解 能说出元素显示隐藏最常见的写法能说出精灵图产生的目的能说出去除图片底侧空白缝隙的方法 *应用 能写出最常见的鼠标样式能使用精灵图技术能用…

    Linux 2023年6月8日
    0122
  • 【设计模式】Java设计模式-命令模式

    Java设计模式 – 命令模式 😄生命不息,写作不止🔥 继续踏上学习之路,学之分享笔记👊 总有一天我也能像各位大佬一样🏆 一个有梦有戏的人 @怒放吧德德🌝分享学习心得,…

    Linux 2023年6月6日
    080
  • 操作系统实现-中断及任务调度

    博客网址:www.shicoder.top微信:18223081347欢迎加群聊天 :452380935 这一次我们来对内核进行完善,主要包括全局描述符的加载、任务调度、中断等 全…

    Linux 2023年6月13日
    084
  • powershell遇到错误即推出的方法

    $ErrorActionPreference = “Stop”; $tcpClient = new-object Net.Sockets.TcpClient…

    Linux 2023年5月28日
    082
  • Redis设置密码

    设置密码有两种方式。 运行cmd切换到redis根目录,先启动服务端 ><span class="hljs-selector-tag">red…

    Linux 2023年5月28日
    077
  • [转帖]shell学习之shell执行方式及排错

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年5月28日
    089
  • C++ 之多态总结

    前言 最近为了完成数据库系统的实验,又复习起了《C++ Primer》,上一次看这本巨著也是大二下的六月份,那时看面向对象程序编程这一章还云里雾里的,没有领会多态的奥妙,学完 Ja…

    Linux 2023年6月7日
    085
  • 浅谈kali : arpspoof工具原理

    介绍 arpspoof是一个通过ARP协议伪造数据包实现中间人攻击的kali工具。 中间人攻击虽然古老,但仍处于受到黑客攻击的危险中,可能会严重导致危害服务器和用户。仍然有很多变种…

    Linux 2023年6月14日
    083
  • 不自由的自由职业

    大家好。我叫梁旭,以前是农民,现在是自由职业者。 [En] Hello, everyone. I’m Liangxu, a former farmer, and now…

    Linux 2023年5月27日
    0120
  • Ubuntu 进程 线程 查看 设置(top taskset)

    top 的基本使用 taskset 的基本使用 top top 详解 及 使用 top 常用的命令 taskset taskset 的基本使用 1. 显示某个进程(线程)运行所在的…

    Linux 2023年6月6日
    0115
  • SpringSecurity

    SpringSecurity 11.1 SpringSecurity简介 Spring 是一个非常流行和成功的 Java 应用开发框架。Spring Security 基于 Spr…

    Linux 2023年6月14日
    094
  • 简单易用的任务队列-beanstalkd

    概述 beanstalkd 是一个简单快速的分布式工作队列系统,协议基于 ASCII 编码运行在 TCP 上。其最初设计的目的是通过后台异步执行耗时任务的方式降低高容量 Web 应…

    Linux 2023年6月7日
    0101
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球