echarts 旭日图 层级嵌套 子级完全继承父级颜色

news/2024/10/7 23:16:30/

完成的一个需求旭日图,后来产品说二级要和一级的颜色保持一致,不能看着太浅(二级图层继承父级后会有一层浅浅的模糊痕迹,处理这个方法我是直接写的死颜色,进行itemStyle配置)
代码参见如下
如果想看旭日图功能可以看这个链接,旭日图功能项

export const echartsOption = (data: Array<object>, issueTotal:number, titleStr: string) => {let option = {}let seriesData: any = []// 这里配置的颜色是参照返回数据的最大数量设定的,需要提前问下let colors =['#8A53E8','#5383F1','#F95B56','#28E99D','#FF9821','#47C2EF','#5470c6','#91cc75','#fac858','#eee666','#73c0de','#42F0BC','#F8D569','#D486FB','#FF8C88','#82A3F0']data.forEach((ma: any, index) => {let list = ma.children?.map((v:any)=>{return {...v,itemStyle:{color: colors[index]}}})let a = JSON.parse(JSON.stringify(list).replace(/questionNum/g, 'value').replace(/name/g, 'name').replace(/ratio/g, 'radio'))seriesData.push({position0: titleStr === 'Position' ? ma?.position0 : undefined,behavior0: titleStr != 'Position' ? ma?.behavior0 : undefined ,name: ma?.name,radio: ma?.ratio, // 占比realvalue: ma?.questionNum, // 数量children: a,itemStyle:{color: colors[index]}})})if (seriesData && seriesData.length > 0) {option = {// 提示器tooltip: {show: 'true',trigger: 'item',axisPointer: {type: 'shadow'},formatter: function (params: any) {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,nodeClick: function (params: any) { // 阻止点击事件向下传播  禁用整体的展开折叠功能return false},radius: [0, '100%'],bottom: 20,emphasis: {focus: 'ancestor' // 祖先},// itemStyle:{//   color: function (param: any) {//     return ''//   }// },label: {overflow: 'truncate', // 设置文本超出时显示省略号truncate: {maxWidth: 50 // 设置最大宽度为50px}},levels: [{},{r0: '20%',r: '49%',label: {width: 64,// rotate: 'tangential',align: 'center',formatter: function (params:any) {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) {return (`${params.data.name}(${params.data.value})\n${params.data.radio}%`)}}}]}]}} else {option = {title: {left: 'center',top: 'center',fontSize: 20,subtext: '暂无数据'}}}return option
}

http://www.ppmy.cn/news/1443953.html

相关文章

#天空星RTC

一、选择时钟源为LSI 二、频率为32.768kHz 三、配置注意&#xff1a; 1.电源管理时钟 2.RTC备份寄存器&#xff08;每次上电先检测RTC之前是否初始化过&#xff09; 3.时钟源:LSE or LSI 4.写保护 5.编辑模式 6.日期时间获取 四、代码 /** 立创开发板软硬件资料与相关扩…

按键冲突ctrl和ctrl+z

在开发当中&#xff0c;我分别在keydown和keyup中编写了ctrl的事件。 是为了按住ctrl时进入特定的场景编辑模式&#xff0c;送开始消除特殊的模式。 当我编写ctrlz的功能时&#xff0c;bug出现了 当我按住ctrlz时&#xff0c;再松开特殊场景模式没有消除。 原因是我将ctrlz事件…

2024年深圳杯东三省数学建模联赛赛题浅析

深圳杯&东三省数学建模联赛赛题浅析 赛题难度 一图如下所示 题目复杂性技术需求数据处理主要难点总体评估A题&#xff1a;多个火箭残骸的准确定位222精确处理误差和定位精度1B题&#xff1a;批量工件并行切割下料问题344最大化材料利用率和多动态切割头协调3C题&#xff…

go圣经 ——方法

这里只是记录了自己学过一遍但是在圣经&#xff08;狼吞虎咽&#xff09;中又看到的新鲜玩意 我们又称之为选择器 package mainimport "fmt"type Rect struct {width, height float64 }// 定义一个方法来计算矩形的面积 func (r Rect) Area() float64 {return r.wi…

重学java 26.面向对象 内部类⭐

“别担心&#xff0c;你一定能如愿。” —— 24.4.29 1.什么时候使用内部类&#xff1a; 当一个事物的内部&#xff0c;还有一个部分需要完整的结构去描述&#xff0c;而内部的完整结构又只为外部事物提供服务&#xff0c;那么整个内部的完整结构最好使用内部类 比如&#xff1…

【C++】C++11 的 auto 和 decltype 两个关键字的应用

auto 和 decltype 是 C11 引入的两个关键字&#xff0c;它们增强了类型推导机制&#xff0c;使得代码更加简洁、灵活且易于维护。下面是对这两个关键字的说明以及使用案例。 1. auto auto 关键字允许编译器根据初始化表达式自动推导出变量的类型。这在处理复杂类型或者避免重…

一文解读 SQL 生成工具

SQL 生成工具可用于测试 Parser 与其他数据库产品的兼容性&#xff0c;通过解析 YACC 语法文件中的产生式&#xff0c;生成对应的 SQL 语句&#xff0c;再使用数据库执行该 SQL&#xff0c;根据结果判断语句是否与其他数据库语法兼容。 01工具使用 语法文件预处理 预处理目的…

JAVA 每日面试题(二)

Java 高级面试问题及答案 1. 什么是Java内存模型&#xff08;JMM&#xff09;&#xff1f;它在多线程编程中扮演什么角色&#xff1f; 答案&#xff1a; Java内存模型&#xff08;JMM&#xff09;是一个抽象的概念&#xff0c;它定义了Java程序在执行时&#xff0c;变量的访问…