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

news2024/10/7 14:32:49
背景

使用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: {
    // 选中状态icon
    active: '',
    // 未选中状态icon
    inactive: ''
  },
  ... // 更多套自定义图标 
}
// 图例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, // 图例icon
    show, // 是否展示图例
    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.coloradmin.cn/o/1460074.html

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

相关文章

电脑进水无法开机怎么办 电脑进水开不了机的解决方法

意外总是会不定时打破你的计划&#xff0c;电脑这类电器最怕遇到的除了火还有水&#xff0c;设备进水会导致数据丢失&#xff0c;那么我们遇到电脑进水怎么办&#xff1f;进水之后不正确处理也会引起很多不必要的麻烦. 解决办法 第一步&#xff1a;关机 如果您的电脑是在开…

探索NFC技术在游戏玩具娱乐,医疗保健和穿戴设备领域的三大应用

NFC是与众不同的无线技术。这意味着它只能在两个设备相近时起作用。在其他用无线技术随机广播的方式以被接收时&#xff0c;NFC更重要的独特之处于其使用电源的方式。或者&#xff0c;更确切地说&#xff0c;它可以在不供电的环境下进行工作。它是一种非接触式智能卡技术的演进…

威尔金森功分器基本原理学习笔记

威尔金森功分器基本原理 威尔金森功率分配器的功能是将输入信号等分或不等分的分配到各个输出端口&#xff0c;并保持相同输出相位。环形器虽然有类似功能&#xff0c;但威尔金森功率分配器在应用上具有更宽的带宽。微带形功分器的电路结构如图所示&#xff0c;其中&#xff0…

小程序--loading和toast

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

全球自然灾害数据可视化分享

分享自然灾害数据&#xff0c;主要包括地震、火山、山体滑坡、饥荒和干旱、飓风、龙卷风和旋风、极端降水和洪水、极端温度(冷热)、森林大火、闪电等。 想获取全球历年自然灾害数据&#xff0c;关注本后台私信“自然灾害数据”&#xff0c;即可获得&#xff0c;长期有效&#…

C# CAD交互界面-模态窗体与非模态窗体调用方式

运行环境Visual Studio 2022 c# cad2016 一、模态窗体调用方式&#xff1a; 当一个模态窗体打开时&#xff0c;它会阻塞主窗体的所有输入&#xff0c;直到关闭该模态窗体为止。例如&#xff0c;弹出一个对话框让用户必须完成某些操作后才能继续使用主程序。 [CommandMethod(&q…

Bert基础(二)--多头注意力

多头注意力 顾名思义&#xff0c;多头注意力是指我们可以使用多个注意力头&#xff0c;而不是只用一个。也就是说&#xff0c;我们可以应用在上篇中学习的计算注意力矩阵Z的方法&#xff0c;来求得多个注意力矩阵。让我们通过一个例子来理解多头注意力层的作用。以All is well…

设计模式四:适配器模式

1、适配器模式的理解 适配器模式可以理解为有两个现成的类Adaptee和Target&#xff0c;它们两个是不能动的&#xff0c;要求必须使用B这个类来实现一个功能&#xff0c;但是A的内容是能复用的&#xff0c;这个时候我们需要编写一个转换器 适配器模式 Adaptee&#xff1a;被适…

ubuntu 22.04.3 live server安装JDK21与远程编程环境和maven

ubuntu 22.04.3 live server安装JDK21与远程编程环境 一、安装jdk21 解压jdk压缩包&#xff0c;命令&#xff1a; tar -zxvf jdk-21_linux-x64_bin.tar.gz打开环境变量&#xff0c;命令&#xff1a; sudo vim /etc/profile配置环境变量 export JAVA_HOME/root/jdk-21.0.2 …

【Python】OpenCV-图片差异检测与标注

图片差异检测与标注 在图像处理领域中&#xff0c;检测两张图片之间的差异是一项重要的任务。本文将介绍一个使用OpenCV库进行图片差异检测的简单示例代码&#xff0c;并详细注释每个步骤。 1. 引言 图片差异检测是在两张图片之间寻找差异点或区域的过程。这项技术可用于监测…

缀点成线

1232. 缀点成线 给定一个数组 coordinates &#xff0c;其中 coordinates[i] [x, y] &#xff0c; [x, y] 表示横坐标为 x、纵坐标为 y 的点。请你来判断&#xff0c;这些点是否在该坐标系中属于同一条直线上。 示例 1&#xff1a; 输入&#xff1a;coordinates [[1,2],[2,3…

分治算法总结(Java)

目录 分治算法概述 快速排序 练习1&#xff1a;排序数组 练习2&#xff1a;数组中的第K个最大元素 练习3&#xff1a;最小k个数 归并排序 练习4&#xff1a;排序数组 练习5&#xff1a;交易逆序对的总数 练习6&#xff1a;计算右侧小于当前元素的个数 练习7&#xff1…

Maven setting.xml 配置

目的&#xff1a;可以把我们书写的jar包发布到maven私有仓库&#xff0c;简称私仓 1. 打开云效 2.点击 非生产库-snapshot mave release仓库与snapshot仓库区别&#xff1f; 在软件开发中&#xff0c;"Maven release 仓库"和"Maven snapshot 仓库"是两种…

一周学会Django5 Python Web开发-Django5路由定义

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计22条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…

Docker vs VM

关于应用程序的托管和开发&#xff0c;市场中的技术和产品琳琅满目。对比 Docker 和 VM&#xff0c;如何取舍&#xff1f;这主要由自身团队的因素决定&#xff0c;在选择 Docker 的情况下&#xff0c;你需要保证程序可在容器和虚拟机中运行。另外&#xff0c;成本和易用性也是重…

五种多目标优化算法(MOGWO、MOJS、NSWOA、MOPSO、MOAHA)性能对比(提供MATLAB代码)

一、5种多目标优化算法简介 1.1MOGWO 1.2MOJS 1.3NSWOA 1.4MOPSO 1.5MOAHA 二、5种多目标优化算法性能对比 为了测试5种算法的性能将其求解9个多目标测试函数&#xff08;zdt1、zdt2 、zdt3、 zdt4、 zdt6 、Schaffer、 Kursawe 、Viennet2、 Viennet3&#xff09;&#xff0…

C语言字符串函数strcpy与strncpy

注意&#xff1a; 这两个函数的功能&#xff0c;都是将 src 中的字符串&#xff0c;复制到 dest 中。strcpy() 没有边界控制&#xff0c;因此可能会由于 src 的过长而导致内存溢出。strncpy() 有边界控制&#xff0c;最多复制 n1 个字符&#xff08;其中最后一个是 ‘\0’ &…

百度RT-DETR :基于视觉变换器的实时物体检测器

概述 实时检测转换器 (RT-DETR) 由百度开发&#xff0c;是一种尖端的端到端物体检测器&#xff0c;可在保持高精度的同时提供实时性能。它利用视觉转换器&#xff08;ViT&#xff09;的强大功能&#xff0c;通过解耦尺度内交互和跨尺度融合&#xff0c;高效处理多尺度特征。RT…

ALBEF算法解读

ALBEF论文全名Align before Fuse: Vision and Language Representation Learning with Momentum Distillation&#xff0c;来自于Align before Fuse&#xff0c;作者团队为Salesforce Research。 论文地址&#xff1a;https://arxiv.org/pdf/2107.07651.pdf 论文代码&#xff1…

跑批SQL性能异常分析

跑批是串行进行的&#xff0c;同时伴随着在线业务&#xff0c;整个跑批过程中只卡在SQL&#xff08;6hqva0h4awrxh&#xff09;执行环节上&#xff0c;相关等待事件为gc current grant 2-way&#xff0c;其他环节及在线业务都不受影响&#xff0c;主机整体资源较为空闲。最后通…