echars点击图例之后只显示当前数据其他隐藏

ops/2024/9/24 5:27:50/

echarts_0">1. 确认echarts默认效果

echarts默认点击图例有如下效果:

  1. 当前图例显示,点击后隐藏该图例;
  2. 当前图例隐藏,点击后显示该图例。

2. 确认需要处理的事件

经过在官网查看事件后发现最合适的是legendselectchanged事件,该事件在切换图例选中状态时触发。
具体用法为:

html" title=javascript>javascript">myChart.on('legendselectchanged', params => {})

3. 将目标简单化

由于echarts本身自带是否显示影藏,那我们只需要在这个基础上优化以下两点即可:

  1. 当所有图例都不显示的时候显示全部图例;
  2. 当除了当前点击图例,其他图例都显示的时候(也就是全部显示的情况下点击了当前图例),只显示当前图例。

4. 代码实现

html" title=javascript>javascript">myChart.on('legendselectchanged', params => {const curLegend = params.name;const allLegend = Object.keys(params.selected);const selectedArr = Object.keys(params.selected).filter(el => params.selected[el])const clearFlag = selectedArr.length === 0const onlyCur = selectedArr.length + 1 === allLegend.length && !selectedArr.includes(curLegend);if (clearFlag) {allLegend.forEach(key => {myChart.dispatchAction({type: 'legendSelect',name: key,})})}if (onlyCur) {allLegend.forEach(key => {myChart.dispatchAction({type: key === curLegend ? 'legendSelect' : 'legendUnSelect',name: key,})})}
})

4. 完整代码

html"><!DOCTYPE html>
<html><head><meta charset="utf-8" /><title>ECharts</title><!-- 引入刚刚下载的 ECharts 文件 --><script src="https://cdn.jsdelivr.net/npm/echarts@5.5.0/dist/echarts.min.js"></script>
</head><body><!-- 为 ECharts 准备一个定义了宽高的 DOM --><div id="main" style="height:400px;"></div><script type="text/html" title=javascript>javascript">html" title=javascript>javascript">// 基于准备好的dom,初始化echarts实例var myChart = echarts.init(document.getElementById('main'));// 指定图表的配置项和数据var option = option = {title: {text: 'Stacked Line'},tooltip: {trigger: 'axis'},legend: {data: ['Email', 'Union Ads', 'Video Ads', 'Direct', 'Search Engine']},grid: {left: '3%',right: '4%',bottom: '3%',containLabel: true},xAxis: {type: 'category',boundaryGap: false,data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']},yAxis: {type: 'value'},series: [{name: 'Email',type: 'line',stack: 'Total',data: [120, 132, 101, 134, 90, 230, 210]},{name: 'Union Ads',type: 'line',stack: 'Total',data: [220, 182, 191, 234, 290, 330, 310]},{name: 'Video Ads',type: 'line',stack: 'Total',data: [150, 232, 201, 154, 190, 330, 410]},{name: 'Direct',type: 'line',stack: 'Total',data: [320, 332, 301, 334, 390, 330, 320]},{name: 'Search Engine',type: 'line',stack: 'Total',data: [820, 932, 901, 934, 1290, 1330, 1320]}]
};// 使用刚指定的配置项和数据显示图表。myChart.setOption(option);myChart.on('legendselectchanged', params => {const curLegend = params.name;const allLegend = Object.keys(params.selected);const selectedArr = Object.keys(params.selected).filter(el => params.selected[el])const clearFlag = selectedArr.length === 0const onlyCur = selectedArr.length + 1 === allLegend.length && !selectedArr.includes(curLegend);if (clearFlag) {allLegend.forEach(key => {myChart.dispatchAction({type: 'legendSelect',name: key,})})}if (onlyCur) {allLegend.forEach(key => {myChart.dispatchAction({type: key === curLegend ? 'legendSelect' : 'legendUnSelect',name: key,})})}});</script>
</body></html>

http://www.ppmy.cn/ops/8532.html

相关文章

前端框架技术调研

目前程序员使用前端框架最多的是哪一个&#xff1f;

实验室信息系统源码 saas模式java+.Net Core版开发的云LIS系统全套源码可二次开发有演示

实验室信息系统源码 saas模式java.Net Core版开发的云LIS系统全套源码可二次开发有演示 一、技术框架 技术架构&#xff1a;Asp.NET CORE 3.1 MVC SQLserver Redis等 开发语言&#xff1a;C# 6.0、JavaScript 前端框架&#xff1a;JQuery、EasyUI、Bootstrap 后端框架&am…

医疗大模型产品设计

医疗领域的大型模型可以涵盖许多功能点&#xff0c;以提供全面的医疗支持和解决方案。以下是一些可能的功能点设计&#xff1a; 1. **疾病诊断与预测**&#xff1a;利用机器学习算法和医疗数据对患者的症状进行诊断和预测&#xff0c;帮助医生提供更准确的诊断和治疗建议。 2…

【随想录】Day22—第六章 二叉树part08

目录 题目1: 二叉搜索树的最近公共祖先1- 思路2- 题解⭐ 二叉搜索树的最近公共祖先 ——题解思路 题目2: 二叉搜索树中的插入操作1- 思路2- 题解⭐ 二叉搜索树中的插入操作 ——题解思路 题目3: 删除二叉搜索树中的节点1- 思路2- 题解⭐ 删除二叉搜索树中的节点 ——题解思路 题…

vue2指令

vue2指令 v-model 的工作原理&#xff0c;它如何在表单输入和应用状态之间创建双向绑定 v-model 是 Vue 中一个特殊的指令&#xff0c;用于在表单 <input>、<textarea> 及 <select> 元素上创建双向数据绑定。它根据控件类型自动选取正确的方法来更新元素。…

【MySQL 数据宝典】【磁盘结构】- 001 表空间介绍优化建议

一、表空间介绍 InnoDB 其实是使用 页 为基本单位来管理存储空间的&#xff0c;默认的 页 大小为 16KB 。 对于 InnoDB 存储引擎来说&#xff0c;每个索引都对应着一棵 B 树&#xff0c;该 B 树的每个节点都是一个数据页&#xff0c;数据页之 间不必要是物理连续的&#xff0c…

相机1:如何系相机肩带

开始解锁新领域&#xff0c;多看几个相关视频&#xff0c;大概也就可以掌握一两种系相机肩带的方法&#xff0c;本质就是新知识的学习过程&#xff0c;不可能等着或者期待出来一个完整的教程&#xff0c;一步一步自己去探索&#xff0c;自己去查资料。 目录 总述 第一步&#…

【算法模版】基础算法

文章目录 快速排序算法模板归并排序算法模板整数二分算法模板浮点数二分算法模板高精度加法、减法、乘法、除法高精度加法高精度减法高精度乘低精度高精度除以低精度前缀和与差分一维前缀和二维前缀和一维差分二维差分位运算双指针算法离散化区间合并 快速排序算法模板 快速排…