Echarts图例如何将选中与未选中状态配置成不同图形

背景

使用Echarts实现功能过程中,由于用户感觉Echarts图例的原生图案(例如圆形)不能直观地表现出该处可以点击筛选展示,故设计将选中的图例与未选中的图例设置成两种不同的图形(多为勾选与未勾选)。Echarts原生功能可以配置图例图案,但无法直接对未选中的图案进行自定义。

分析
  • Echarts图例legend中icon属性可以配置图例的图形,包括使用预制的几种图形、使用图片路径、使用path://开头的矢量图,以下使用矢量图作为示例。
  • 虽然legend可以通过inactiveColor修改未选中的图形颜色,但是icon只能配置一套。此处考虑配置多个legend,即以数组的形式配置legend,分别设置各自的icon图形,并对需要在选中状态显示的那个图形中,使用inactiveColor: '#fff'将其未选中时隐藏起来(其余配置保持一致),达到两套图案的效果,具体实现如下。
代码
// Echarts配置
legend: [{icon: iconStr, // 仅在选中状态显示top: '10%',right: '4%',itemWidth: 16,itemHeight: 16,inactiveColor: '#fff' // 在未选中状态下不显示},{icon: inactiveIconStr,top: '10%',right: '4%',itemWidth: 16,itemHeight: 16,}
];const iconStr = 'path://M512 0a512 512 0 1 0 512 512A512 512 0 0 0 512 0z m345.344 334.848l-399.36 414.464a44.288 44.288 0 0 1-67.84 5.12 43.264 43.264 0 0 1-3.328-5.12l-220.16-228.096a47.36 47.36 0 0 1 0-65.28 43.264 43.264 0 0 1 62.72 0l192.768 199.936L793.6 269.824a43.264 43.264 0 0 1 62.72 0 47.36 47.36 0 0 1 1.024 65.024z';const inactiveIconStr = 'path://M511.867482 960.748421c-246.668982 0-447.332165-200.663182-447.332165-447.338305 0-246.666936 200.663182-447.331141 447.332165-447.331141 246.675122 0 447.337281 200.664206 447.337281 447.331141C959.204763 760.086262 758.542604 960.748421 511.867482 960.748421L511.867482 960.748421zM511.867482 129.9824c-211.428364 0-383.427716 172.000376-383.427716 383.427716 0 211.435527 172.000376 383.433856 383.427716 383.433856 211.43348 0 383.432833-171.998329 383.432833-383.433856C895.300314 301.982776 723.300962 129.9824 511.867482 129.9824L511.867482 129.9824zM511.867482 129.9824';

效果:
在这里插入图片描述

抽离为独立的配置方法

// 图例自定义
export const legendIconPath = {common: {// 选中状态iconactive: '',// 未选中状态iconinactive: ''},... // 更多套自定义图标 
}
// 图例icon大小
export const legendIconSize = {common: 12,...
}
// 图例位置
export const legendPosition = {right: '4%',middle: 'middle'
}
export const getLegendIcon = (type: type = 'common',show: show = true,position: position = 'right',selected: selected = {}
): Array<any> => {return [{// 仅激活时显示icon: legendIconPath[type].active, // 图例iconshow, // 是否展示图例top: '5%',right: legendPosition[position],itemWidth: legendIconSize[type],itemHeight: legendIconSize[type],inactiveColor: '#fff',selected // 默认选中状态},// 持续显示{icon: legendIconPath[type].inactive,show,top: '5%',right: legendPosition[position],itemWidth: legendIconSize[type],itemHeight: legendIconSize[type],selected}]
};// 参数定义
type type = 'common' | 'xxx'; // 图例类型(预设)
type show = boolean; // 是否显示
type position = 'right' | 'middle'; // 图例位置
interface selected {[propName: string]: boolean;
} // 默认选中项
参考资料

【Echarts官方文档-legend配置项】

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

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

相关文章

设计模式----开题

简介&#xff1a; 本文主要介绍设计模式中的六大设计原则。开闭原则&#xff0c;里氏代换原则&#xff0c;依赖倒转原则&#xff0c;接口隔离原则&#xff0c;迪米特原则和合成复用原则。这几大原则是设计模式使用的基础&#xff0c;在使用设计模式时&#xff0c;应该牢记这六大…

Java实战:使用XML与注解方式实现CRUD操作

本文将详细介绍如何使用MyBatis框架&#xff0c;通过XML映射文件和注解两种方式来实现数据库的增删改查&#xff08;CRUD&#xff09;操作。我们将探讨MyBatis的配置和使用方法&#xff0c;并通过一个具体示例来演示如何使用XML和注解来完成基本的数据库操作。本文适合希望学习…

代码随想录刷题笔记-Day20

1. 二叉树的最近公共祖先 236. 二叉树的最近公共祖先https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/ 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#x…

力扣 面试题 05.06. 整数转换

思路&#xff1a; 牵扯到二进制数&#xff0c;基本上要考虑位运算符&#xff0c;相关知识可以见http://t.csdnimg.cn/fzts7 之前做过类似的题目&#xff0c;大致思路就是先用按位异或^找出不同位&#xff0c;再用n&&#xff08;n-1&#xff09;计算出不同位的个数&#x…

Nginx的流式响应配置

Nginx的流式响应配置 使用ChatGPT的能力在聊天时来实现打字机效果&#xff0c;因此需要服务端接口进行流式响应&#xff0c;碰到了几个问题&#xff1a; 1、服务端明明配置了响应头的Content-Type为&#xff1a;text/event-stream&#xff0c;但前端仍然不是流式接收内容。 2、…

在VsCode中通过Cookie登录LeetCode

在vscode中配置好leetcode之后&#xff0c;一般最常用的就是通过cookie登录leetcode ; 首先点击sign in &#xff0c; 然后选择最下面的 &#xff0c; LeetCode Cookie ! 然后输入username(也就是你的lc用户名) 或者 你leetcode绑定的邮箱 ; 输入完成之后 ; 就是要你输入你的l…

vue+element (el-progress)标签 隐藏百分比(%) ,反向显示 ,自定义颜色, demo 复制粘贴拿去用

1 效果: 2 页面代码: <el-row :gutter"10" ><el-col :span"12"><el-card ><div class"fourqu"><div><span slot"title">{{推送任务TOP5}}</span></div></div><div class&…

C++程序设计学习笔记(一)

目录 1.C语言简介 1.C语言发展简史 1.机器语言 2.汇编语言 3.高级语言 4.C语言发展简史 5.C和C语言的关系 2.C语言的特点 1.基本的输入输出 1.C中的输入流和输出流 2.标准的hellworld代码 3.简单的输输出函数 2.头文件和命名空间 1.头文件 2.命名空间 …

[Mac软件]Mac上的最佳3D建模工具-犀牛Rhinoceros 8 for Mac v8.4.24044.1500完美兼容激活

【黑果魏叔】Rhino 8是一款由美国Robert McNeel & Assoc开发的强大的专业3D造型软件&#xff0c;广泛应用于三维动画制作、工业制造、科学研究以及机械设计等领域。它可以轻松整合3DS MAX与Softimage的模型功能部分&#xff0c;对精细、弹性与复杂的3D NURBS模型具有高效的…

【RT-DETR有效改进】大核注意力 | LSKAttention助力极限涨点

一、本文介绍 在这篇文章中,我们将讲解如何将LSKAttention大核注意力机制应用于RT-DETR,以实现显著的性能提升。首先,我们介绍LSKAttention机制的基本原理,它主要通过将深度卷积层的2D卷积核分解为水平和垂直1D卷积核,减少了计算复杂性和内存占用。接着,我们介绍将这一…

布客深度学习译文集 2024.2 更新

Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版Sklearn 与 TensorFlow 机器学习实用指南第二版PyTorch 自然语言处理Transformer 和扩散模型的生成式 AI 实用指南&#xff08;预览版&#xff09;Transformer 自然语言处理面向程序员的 FastAI 和 PyTorch 深度学习Tensor…

MySQL篇—事务和隔离级别介绍

☘️博主介绍☘️&#xff1a; ✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux&#xff0c;也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章&#xff0c;并且也会默默的点赞收藏加关注❣…

SG-8201CJA(汽车可编程晶体振荡器)

爱普生的SG-8021CJA是一款符合AEC-Q100标准的晶体振荡器&#xff0c;专为要求苛刻的汽车/ADAS应用&#xff08;如激光雷达和相机ECU&#xff09;而设计。它采用爱普生的内部低噪声小数NPLL&#xff0c;输出 频率高达170MHz&#xff0c;相位抖动小于1/25&#xff0c;稳定性比之前…

【前端素材】推荐实用的后台管理系统ebazer电商平台模板(附带源码)

一、需求分析 后台管理系统网站是指用于管理和控制网站、应用程序或系统后台运行的管理工具。它通常是网站或应用程序的管理者、管理员或内容编辑人员使用的界面&#xff0c;具有一系列功能来管理用户、内容、数据和系统设置。以下是后台管理系统网站的功能和特点&#xff1a;…

Mqtt qs 消息可靠性分析

什么是QoS 很多时候,使用MQTT协议的设备都运行在网络受限的环境下,而只依靠底层的TCP传输协议,并不能完全保证消息的可靠到达。因此,MQTT提供了QoS机制,其核心是设计了多种消息交互机制来提供不同的服务质量,来满足用户在各种场景下对消息可靠性的要求。 MQTT定义了三个Q…

Open Systems Interconnection(开放式系统互联)

OSI&#xff08;Open Systems Interconnection&#xff0c;开放式系统互联&#xff09;模型是一个描述计算机网络体系结构和通信系统的参考模型&#xff0c;它将计算机网络分成七个抽象的层级&#xff0c;每个层级负责不同的功能&#xff0c;从物理连接到最终的应用程序。以下是…

动态规划--买卖股票的最佳时机的6种变形

代码随想录中对6种变形做了详细的对比和分析&#xff0c;记录如下&#xff0c;模板是固定的。 121. 买卖股票的最佳时机 class Solution { public:int maxProfit(vector<int>& prices) {vector<vector<int>> dp(prices.size(), vector<int>(2,0)…

CapCut - 剪映国际版11.1.0

​【应用名称】&#xff1a;CapCut - 剪映国际版 【适用平台】&#xff1a;#Android 【软件标签】&#xff1a;#CapCut #剪映国际版 【应用版本】&#xff1a;11.1.0 【应用大小】&#xff1a;231MB 【软件说明】&#xff1a;软件升级更新。目前大家广泛使用的最令人惊叹、最专…

token的理解和代码,token是什么?

面试场景&#xff1a; 以前有个学生去面试&#xff0c;公司问他&#xff0c;如果你们公司的接口文档被你的亲戚看到了&#xff0c;会怎么样&#xff1f;会导致什么问题&#xff0c;为了防止这个问题&#xff0c;需要用什么来解决&#xff1f;这个根据学生回忆的写的。 学生当…

小程序--loading和toast

一、loading wx.showLoading({})显示loading提示框。wx.hideLoading({})隐藏loading提示框。 title&#xff1a;文字提示内容 mask&#xff1a;是否显示透明蒙层&#xff0c;防止触摸穿透。 更多属性参考showLoading官方文档。 wx.showLoading({title: 加载中...,mask: true }…