echarts 旭日图 层级嵌套

基础的可以直接参考官网进行配置。

Echarts旭日图的特点如下:

1 层次结构展示:旭日图适用于展示层次结构数据,通过不同的扇形区域来表示不同层次的数据。每个扇形区域的大小和位置表示了数据的大小和层次关系。

2 渐进式呈现:旭日图支持渐进式呈现,可以通过交互操作逐步展开或收缩各个层次结构,使得用户可以更加深入地了解数据的细节。

3 编码多个维度:旭日图可以编码多个维度的数据,通过扇形区域的颜色、半径或角度来表示数据的不同维度。这样可以在一个图表中同时展示多个维度的数据,方便进行数据的对比和分析。

4 交互操作丰富:Echarts旭日图支持选中、高亮、点击事件等交互操作,用户可以与旭日图进行交互,进行数据的筛选和查看。例如,可以通过点击某个扇形区域来展开或收缩该层次的子层次数据。

5 兼容性强:Echarts旭日图能够兼容主流的浏览器,并且提供了响应式布局的功能,可以自适应不同的屏幕尺寸。

6 可扩展性好:Echarts提供了丰富的扩展插件和主题,用户可以根据需求自定义图表的功能和外观。同时,Echarts还支持与其他前端框架(如Vue、React)的集成,方便开发者更好地使用和扩展

在这里插入图片描述
实际项目中,我们发现官网提供的只是基础内容,有的功能我们用不到,例如官网提供的旭日图,点击了某个区域就会进行扩展, 中心没有数据, 文本超出省略配置,以及引导线配置 等

( nodeClick  阻止扩展收缩功能),中心没有数据(可以进行 graphic 配置),
配置引导线(labelLine 配置 )--- 只不过引导线会很丑,且没有环形图好看,这里配置了但是注释了,查了一下,旭日图好像没有特定引导线,都是自己去画的但是很丑。文本超出省略配置 
label: {overflow: 'truncate', // 设置文本超出时显示省略号truncate: {maxWidth: 50 // 设置最大宽度为50px}
}  

改造如下。
直接上数据了。

// 质量位置数据结构, 和后端定义好,直接就能用
export const QUALITY_POSITION = [
//  问题总数 issueTotal
// (2)图形外透:name+  questionNum
// (3)鼠标悬停时气泡显示: name , questionNum , ratio {ratio: 4.5,questionNum: 6.5,position0: 1,name: 'BOM结构类',children: [{ratio: 4,questionNum: 5,position0: 1,position1: 101,name: '搭错物料结构'},{ratio: 5,questionNum: 6,position0: 1,position1: 102,name: '组件漏投'}]},{ratio: 4,questionNum: 5,position0: 2,name: '结构件类',children: [{ratio: 4,questionNum: 5,position0: 2,position1: 201,name: '底座'},{ratio: 4,questionNum: 5,position0: 2,position1: 202,name: '顶梁'},{ratio: 4,questionNum: 5,position0: 2,position1: 203,name: '顶梁侧护板'},{ratio: 4,questionNum: 5,position0: 2,position1: 204,name: '顶梁前部'},{ratio: 4,questionNum: 5,position0: 2,position1: 205,name: '后连杆'},{ratio: 4,questionNum: 5,position0: 2,position1: 206,name: '脚踏板'},{ratio: 4,questionNum: 5,position0: 2,position1: 207,name: '前梁'},{ratio: 4,questionNum: 5,position0: 2,position1: 208,name: '上连杆'},{ratio: 4,questionNum: 5,position0: 2,position1: 209,name: '伸缩梁'},{ratio: 4,questionNum: 5,position0: 2,position1: 210,name: '推杆'},{ratio: 4,questionNum: 5,position0: 2,position1: 211,name: '尾梁'},{ratio: 4,questionNum: 5,position0: 2,position1: 212,name: '巷道支架摆杆&底座&顶梁&掩护梁'},{ratio: 4,questionNum: 5,position0: 2,position1: 213,name: '掩护梁'},{ratio: 4,questionNum: 5,position0: 2,position1: 214,name: '工作面挡风挡矸'}]},{ratio: 4.5,questionNum: 6.5,position0: 3,name: '液压系统类',children: [{ratio: 4,questionNum: 5,position0: 3,position1: 301,name: 'U型卡不露头'},{ratio: 4,questionNum: 5,position0: 3,position1: 302,name: '标牌错误'},{ratio: 4,questionNum: 5,position0: 3,position1: 303,name: '布置位置不合适'},{ratio: 4,questionNum: 5,position0: 3,position1: 304,name: '阀板干涉'},{ratio: 4,questionNum: 5,position0: 3,position1: 305,name: '功能缺失'},{ratio: 4,questionNum: 5,position0: 3,position1: 306,name: '胶管连接不合适'},{ratio: 4,questionNum: 5,position0: 3,position1: 307,name: '接口尺寸错误'},{ratio: 4,questionNum: 5,position0: 3,position1: 308,name: '连接尺寸错误'},{ratio: 4,questionNum: 5,position0: 3,position1: 309,name: '漏连接件'}]},{ratio: 4.5,questionNum: 6.5,position0: 4,name: '油缸类',children: [{ratio: 4,questionNum: 5,position0: 4,position1: 401,name: '标牌信息错误'},{ratio: 4,questionNum: 5,position0: 4,position1: 402,name: '参数错误'},{ratio: 4,questionNum: 5,position0: 4,position1: 403,name: '尺寸错误'},{ratio: 4,questionNum: 5,position0: 4,position1: 404,name: '防尘圈问题'},{ratio: 4,questionNum: 5,position0: 4,position1: 405,name: '接口尺寸错误'}]},{ratio: 4.5,questionNum: 6.5,position0: 5,name: '直属件类',children: [{ratio: 4,questionNum: 5,position0: 5,position1: 501,name: '挡块问题'},{ratio: 4,questionNum: 5,position0: 5,position1: 502,name: '销轴问题'}]},{ratio: 4.5,questionNum: 6.5,position0: 6,name: '总体类',children: [{ratio: 4,questionNum: 5,position0: 6,position1: 601,name: '漏投零件'},{ratio: 4,questionNum: 5,position0: 6,position1: 602,name: '运动干涉'}]}
]export const echartsOption = (data: Array<object>, issueTotal: number) => {let option = {}let seriesData: any = []data = QUALITY_POSITIONdata.forEach((ma: any, index) => {let a = JSON.parse(JSON.stringify(ma?.children).replace(/questionNum/g, 'value').replace(/name/g, 'name').replace(/ratio/g, 'radio'));seriesData.push({position0: ma?.position0,name: ma?.name,radio: ma?.ratio, // 占比realvalue: ma?.questionNum, // 数量children: a // ma?.children});});if (seriesData && seriesData.length > 0) {option = {// 提示器tooltip: {show: 'true',trigger: 'item',axisPointer: {type: 'shadow'},// (2)图形外透:分类名称+问题数量// (3)鼠标悬停时气泡显示:分类名称、问题数量、占比formatter: function (params: any) {// console.log(params, 'params---params');// 分类名称 数量 占比const htmlTooltip = '分类名称:' + params.data.name + '<br/>' + '数量:' + params.data.value+'<br/>'+ '占比:' + params.data.radio + '%'return htmlTooltip}},graphic: [{type: 'text',//控制内容为文本文字left: "center",top: "46%",//调整距离盒子高处的位置style: {fill: '#3076FE',//控制字体颜色text: `${issueTotal}个`,//控制第一行字显示内容fontSize: '32px',lineHeight: 0,}}, {type: 'text',left: "center",top: "53%",z: 10,style: {text: '问题总数',fontSize: '14px',lineHeight: 14,fill: '#262626',}}],series: [{type: 'sunburst',data: seriesData,// data: data,nodeClick: function (params: any) {// 阻止点击事件向下传播  禁用整体的展开折叠功能return false;},radius: [0, '100%'],bottom: 20,emphasis: {focus: 'ancestor', // 祖先// itemStyle: {//   shadowBlur: 10,//   shadowOffsetX: 0,//   shadowColor: 'rgba(0, 0, 0, 0.5)'// }},label: {overflow: 'truncate', // 设置文本超出时显示省略号truncate: {maxWidth: 50 // 设置最大宽度为50px}},levels: [{},{r0: '20%',r: '49%',label: {width: 64,// rotate: 'tangential',align: 'center',// formatter: ['{b|{b}}', '{c|{c}}'].join('\n'), // 分类名称+问题数量// rich: {//   c: {//     color: 'inherit', // #fff//     lineHeight: 5,//     fontSize: 12,//   },//   b: {//     color: 'inherit', // 继承//     height: 20,//     fontSize: 12,//   }// }formatter: function (params:any) {// console.log(params, 'paramparamparamparam----')// let depth = params.treePathInfo.length// console.log(depth, 'depthdepth');if (params.data.value) {return (`${params.data.name}(${params.data.realvalue})`)}},fontSize: 12,color: '#000'},},{r0: '50%',r: '68%', label: {width: 74,position: 'outside',padding: 0,silent: false,show: true,// rotate: 0,color: 'inherit', // 继承颜色// // 分类名称+问题数量formatter: function (params:any) {// console.log(params, '0000000');return (`${params.data.name}(${params.data.value})\n${params.data.radio}%`)},// formatter: ['{b|{b}}({a})}', '{c|{c}}%'].join('\n'),// rich: {//   a: {//     color: 'inherit',//     align: 'left',//     fontSize: 15,//     // padding: [0, 0]//   },//   b: {//     color: 'inherit',//     fontSize: 15,//     // padding: [3,3]//     // lineHeight: 33//   },//   per: {//     color: 'inherit',//     fontSize: 15,//   }// }},// labelLine: {// 显示刻度线条//   show: true, // 显示引导线//   length: 15, // 引导线的长度//   length2: 200, // 引导线与终点的长度//   useSymbol: true, // 使用标记来表示引导线终点//   symbolSize: 8, // 标记的大小//   lineStyle: { // 引导线的样式//     color: 'rgba(255, 0, 0, 0.5)',//     width: 1//   },//   smooth: 0.8, // 引导线弯曲// },}]}]}} else {option = {title: {left: 'center',top: 'center',fontSize: 20,subtext: '暂无数据'}}}return option
}

剩下的就是在你的页面中接口调用赋值,然后引用上方的 方法,传值就可以显示了。
在这里插入图片描述
onMounted 钩子函数 然后如上图就OK了,需要什么事件操作,去获取 这个echarts的dom 就可以了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/780213.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RelayAttention:让大型语言模型更高效地处理长提示符

一、前言 虽然大型语言模型 (LLM) 近年来取得了非常显著的进展&#xff0c;也在各种自然语言处理任务中展现出强大的能力。然而&#xff0c;LLM 的在实际的应用落地层面也面临着一些实际挑战&#xff0c;其中之一就是效率和成本问题&#xff0c;导致了在垂直行业实际落地的应用…

【spring】@Primary注解学习

Primary介绍 Primary 是 Spring 框架中的一个注解&#xff0c;用于在多个相同类型的 bean 中指定一个默认的 bean。当 Spring 容器在自动装配时遇到类型冲突&#xff0c;即存在多个相同类型的 bean 时&#xff0c;如果没有使用 Qualifier 或其他方式指定具体的 bean&#xff0…

关于深度学习的 PyTorch 项目如何上手分析?从什么地方切入?

文章目录 PyTorch 项目分析1.背景2.分析流程 PyTorch 项目分析 1.背景 当我们拿到一个 PyTorch 的深度学习项目时&#xff0c;应该怎么入手&#xff1f;怎么去查看代码&#xff1f; 2.分析流程 首先阅读对应项目的 README.md 文件。通过阅读 README.md &#xff0c;一般可以…

高风险IP来自哪里:探讨IP地址来源及其风险性质

在网络安全领域&#xff0c;高风险IP地址是指那些可能涉及恶意活动或网络攻击的IP地址。了解这些高风险IP地址的来源可以帮助网络管理员更好地识别和应对潜在的安全威胁。本文将探讨高风险IP地址的来源及其风险性质&#xff0c;并提供一些有效的应对措施。 风险IP查询&#xf…

计算机毕业设计Python+Spark知识图谱高考志愿推荐系统 高考数据分析 高考可视化 高考大数据 大数据毕业设计 机器学习 深度学习 人工智能

学院&#xff08;全称&#xff09;&#xff1a; 专业&#xff08;全称&#xff09;&#xff1a; 姓名 学号 年级 班级 设计&#xff08;论文&#xff09; 题目 基于Spark的高考志愿推荐系统设计与实现 指导教师姓名 职称 拟…

Vulnhub:MY FILE SERVER: 1

目录 信息收集 1、arp 2、nmap 3、whatweb WEB web信息收集 dirmap FTP匿名登录 enum4linux smbclient showmount FTP登录 ssh-kegen ssh登录 提权 系统信息收集 脏牛提权 get root 信息收集 1、arp ┌──(root㉿ru)-[~/kali/vulnhub] └─# arp-scan -l I…

前端bugs

问题&#xff1a; Failed to load plugin typescript-eslint declared in package.json eslint-config-react-app#overrides[0]: Cannot find module eslint/package.json 解决&#xff1a; google了一晚上还得是chatgpt管用 运行以下命令【同时还要注意项目本身使用的Node版…

【2024】使用zabbix监控ESXI 6.5虚拟化系统

本次实验将采用docker部署zabbix 5.2平台监控ESXI 6.5虚拟化系统—————————————————————————— 请自行准备环境: 关于docker部署方案请参考: docker之核心概念与安装 关于docker部署zabbix方案请参考: docker容器方式部署zabbix监控平台 关于ESXI安…

Halcon3D表面平面度检测-平面差值法

//倾斜平面矫正 https://blog.csdn.net/m0_51559565/article/details/137146179前言 通常我们对表面平面度进行检测时&#xff0c;通常使用2种方式。1&#xff1a;通过大卷积核的高斯滤波进行拟合平面&#xff0c;然后求取拟合平面与3D模型间的点间的距离。2&#xff1a;通过平…

Android裁剪图片为波浪形或者曲线形的ImageView

如果需要做一个自定义的波浪效果的进度条&#xff0c;裁剪图片&#xff0c;对ImageView的图片进行裁剪&#xff0c;比如下面2张图&#xff0c;如何实现&#xff1f; 先看下面的效果&#xff0c;看到其实只需要对第一张高亮的图片进行处理即可&#xff0c;灰色状态的作为背景图。…

centos7配置阿里云的镜像站点作为软件包下载源

目录 1、备份 2、下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/ 3、测试 阿里镜像提供的配置方法&#xff1a;centos镜像_centos下载地址_centos安装教程-阿里巴巴开源镜像站 1、备份 [rootlocalhost ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentO…

第十二章:预处理命令

文章目录 第十二章&#xff1a;预处理命令宏定义无参宏定义带参数的宏定义 文件包含处理 第十二章&#xff1a;预处理命令 作用&#xff1a;由编译预处理程序对程序中的特殊命令作出解释&#xff0c;以产生新的源程序对其进行正式编译 C语言与其他语言的重要区别就是可以使用预…

PTA L2-038 病毒溯源

病毒容易发生变异。某种病毒可以通过突变产生若干变异的毒株&#xff0c;而这些变异的病毒又可能被诱发突变产生第二代变异&#xff0c;如此继续不断变化。 现给定一些病毒之间的变异关系&#xff0c;要求你找出其中最长的一条变异链。 在此假设给出的变异都是由突变引起的&a…

用 AI 编程-释放ChatGPT的力量

最近读了本书&#xff0c;是 Sean A Williams 写的&#xff0c;感觉上还是相当不错的。一本薄薄的英文书&#xff0c;还真是写的相当好。如果你想看&#xff0c;还找不到&#xff0c;可以考虑私信我吧。 ChatGPT for Coders Unlock the Power of AI with ChatGPT: A Comprehens…

Vue2版本封装公共echarts的监听方法

#注意 &#xff1a; 因为一个页面有多个图表&#xff0c;所以封装一个公共的js文件&#xff0c;方便后续使用。 适用于Vue2版本&#xff0c;粘贴即用即可。 1、echartsMixin.js文件如下 // echartsMixin.js import echarts from echartsexport default {data() {return {myC…

标题:基于uQRCode的Vue前端二维码生成组件技术探究

摘要&#xff1a;随着移动互联网的普及&#xff0c;二维码作为信息传递的媒介在各类应用中得到了广泛使用。前端开发中&#xff0c;二维码生成功能已成为一个常见的需求。本文将深入探讨如何使用uQRCode库在Vue前端框架中封装一个二维码生成组件&#xff0c;该组件可适用于所有…

小迪学习笔记(内网安全)(常见概念和信息收集)

小迪学习笔记&#xff08;内网安全&#xff09;&#xff08;一&#xff09; 内网分布图内网基本概念工作组和域环境的优缺点内网常用命令域的分类单域父域和子域域数和域森林 Linux域渗透问题内网安全流程小迪演示环境信息收集mimikatzLazagne(all)凭据信息政集操作演示探针主机…

夏季水域安全管理,AI智能识别算法防溺水视频监控方案

随着夏季的到来&#xff0c;不少人为了一时的痛快凉爽就私自下水游泳&#xff0c;特别是在野外池塘&#xff0c;由于长期无人监管&#xff0c;极易发生人员溺亡事件&#xff0c;如何对池塘水域进行全天候无人值守智能监管&#xff0c;并实现发生人员闯入就立即告警&#xff1f;…

C# 学习第五弹——语句

一、if语句 —简单if语句 —if else 语句 —if else if else 语句 1、简单if语句 if&#xff08;表达式&#xff09;{语句} &#xff08;1&#xff09;表达式必须使用圆括号括起来&#xff1b; &#xff08;2&#xff09;表达式&#xff1a;关系表达式或逻辑表达…

数据结构:单调栈和单调队列

文章目录 一、单调栈1.1、栈的思想1.2、单调栈1.2.1、单调栈的基本应用&#xff1a;找出数组中每个元素右侧第一个更大的元素1.2.2、单调栈的基本应用&#xff1a;找出数组中每个元素左侧第一个更大的元素1.2.3、单调栈拓展1.2.4、单调栈LeetCode题单 二、单调队列2.1、队列的思…