echarts图表动态监听dataZoom滑动,控制柱条的宽度以及数值的显示隐藏

当数值过多时,显示所有柱条看着会很凌乱且文字会挤在一起,于是就需要监听datazoom的滑动,拿到对应的阈值后做出相应的配置。
dataZoom” 事件通常用于响应用户对图表进行数据缩放的操作。
这里是datazoom官网api地址:点击跳转至官网文档的datazoom介绍
初始时状态如下图:
在这里插入图片描述
滑动x轴至设定范围内时:
在这里插入图片描述

目录

  • 监听datazoom
    • params值
    • 获取图表的option
    • 控制柱条宽度及数值的显示与隐藏
  • 全部代码(echarts示例可直接粘贴使用)

监听datazoom

myChart为图表元素,在 “dataZoom” 事件上绑定了一个回调函数,当用户在图表上使用数据缩放时,这个回调函数会被触发。

import * as echarts from 'echarts';
var chartDom = document.getElementById('main');
var myChart = echarts.init(chartDom);myChart.on("dataZoom", function (params) {
})

params值

这里可以获取到当前datazoom的开始位置(start)和结束位置(end)
在这里插入图片描述

获取图表的option

myChart.getOption()myChart.setOption(newoption) 是 Echarts 中常用的两个方法,它们分别用于获取当前图表的配置选项和设置新的配置选项。

myChart.getOption():
作用:该方法用于获取当前图表的配置选项对象。可以在需要获取当前配置选项时调用该方法,例如在事件回调中根据当前配置进行进一步处理或修改。
返回值:返回一个包含当前图表配置的 JavaScript 对象,可以包含图表类型、数据系列、样式设置等信息。

以下为myChart.getOption()返回的值,若有其他需要控制的,都可以举一反三,根据这些值的位置对其进行设置,不局限于本文的控制柱条的宽度以及数值的显示隐藏。
在这里插入图片描述

myChart.setOption(newoption):
作用:该方法用于设置新的配置选项对象,即更新图表的显示内容和样式。通过设置新的配置选项,可以动态改变图表的展示效果,包括数据、样式、主题等。
参数:接受一个新的配置选项对象作为参数,用于更新图表的配置。 返回值:并不返回特定的数值,但会触发图表的重新渲染以反映新的配置选项。

控制柱条宽度及数值的显示与隐藏

这里通过循环图表的option配置中的series数组,设置其数值文本是否显示,以及柱条宽度
series.label.showseries.barWidth

// 在用户使用数据缩放时触发该事件
myChart.on('dataZoom', function (params) {// 输出参数信息到控制台console.log('params', params);// 获取当前图表的配置选项var newoption = myChart.getOption();// 获取数据缩放的起始位置和结束位置var dataZoomStart = params.start;var dataZoomEnd = params.end;// 根据数据缩放的范围对图表进行调整if (dataZoomEnd - dataZoomStart > 80) {// 如果数据缩放范围大于80,设置柱状图的标签不显示并设置柱状宽度为5newoption.series.forEach(function (series) {series.label.show = false;//隐藏顶部数值series.barWidth = 5;//柱条宽度为5});} else {// 如果数据缩放范围小于等于80,设置柱状图的标签显示并设置柱状宽度为'auto'newoption.series.forEach(function (series) {series.label.show = true;//显示顶部数值series.barWidth = 'auto';//柱条宽度自适应});}// 根据调整后的配置选项更新图表myChart.setOption(newoption);
});// 设置图表的初始配置选项
option && myChart.setOption(option); 

全部代码(echarts示例可直接粘贴使用)

let colors = [{color: {botom: "rgba(253, 234, 60,0)",top: "rgba(253, 234, 60,1)",},},{color: {botom: "rgba(252, 140, 27,0)",top: "rgba(252, 140, 27,1)",},},{color: {botom: "rgba(100, 218, 217,0)",top: "rgba(100, 218, 217,1)",},},
];
var shadowColors = [];
colors.forEach((item) => {var colorobj = {type: "linear",x: 0,y: 1,x2: 0,y2: 0,colorStops: [{offset: 0,color: item.color.botom, // 0% 处的颜色},{offset: 1,color: item.color.top, // 100% 处的颜色},],};shadowColors.push(colorobj);
});
console.log('shadowColors',shadowColors);
option = {color: shadowColors,dataZoom: [{type: "slider", // 设置为滑动条show: true, // 显示滑动条start: 0, // 滑动条起始位置end: 40, // 滑动条结束位置bottom: 10, // 滑动条距离底部的距离textStyle: {color: "#fff",},backgroundColor: "#acb7c3", // 设置背景颜色handleStyle: {color: "#2a82e4", // 设置左右两边的可滑动收缩竖线颜色},},],tooltip: {trigger: "axis",axisPointer: {type: "shadow", // 显示阴影指示器},formatter: function (indexs) {var data = [];indexs.forEach((item) => {data.push({seriesName: item.seriesName,value: item.value,});});var content = "";data.forEach((item) => {content += item.seriesName + ": " + item.value + "<br>";});return content;},},xAxis: {type: 'category',data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun','Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun','Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']},yAxis: {type: 'value'},series: [{data: [120, 200, 150, 80, 70, 110, 130,120, 200, 150, 80, 70, 110, 130,120, 200, 150, 80, 70, 110, 130],type: 'bar',name:'name1',barWidth: 10,barGap: 1, //柱子之间间距label: {show: true,position: "top",color: "white",rotate: 60,textStyle: {color: colors[0].color.top},},},{data: [110, 250, 110, 80, 90, 120, 160,110, 250, 110, 80, 90, 120, 160,110, 250, 110, 80, 90, 120, 160],type: 'bar',name:'name2',barWidth: 10,barGap: 1, //柱子之间间距label: {show: true,position: "top",color: "white",rotate: 60,textStyle: {color: colors[1].color.top},},},{data: [20, 220, 140, 70, 70, 100, 30,20, 220, 140, 70, 70, 100, 30,20, 220, 140, 70, 70, 100, 30],type: 'bar',name:'name3',barWidth: 10,barGap: 1, //柱子之间间距label: {show: true,position: "top",color: "white",rotate: 60,textStyle: {color: colors[2].color.top},},},]
};
myChart.on("dataZoom", function (params) {var newoption = myChart.getOption();var dataZoomStart = params.start;var dataZoomEnd = params.end;if (dataZoomEnd - dataZoomStart > 70) {newoption.series.forEach(function (series) {series.label.show = false;});}else {newoption.series.forEach(function (series) {series.label.show = true;});}myChart.setOption(newoption);
})

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

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

相关文章

Scala第十一章节(Option类型和偏函数)

2. Option类型 2.1 概述 实际开发中, 在返回一些数据时, 难免会遇到空指针异常(NullPointerException), 遇到一次就处理一次相对来讲还是 比较繁琐的. 在Scala中, 我们返回某些数据时&#xff0c;可以返回一个Option类型的对象来封装具体的数据&#xff0c;从而实现有效 的避…

服务器端(Debian 12)配置jupyter与R 语言的融合

融合前&#xff1a; 服务器端Debian 12,域名&#xff1a;www.leyuxy.online 1.安装r-base #apt install r-base 2.进入R并安装IRkernel #R >install.packages(“IRkernel”) 3.通过jupyter notebook的Terminal执行&#xff1a; R >IRkernel::installspec() 报错 解决…

浅谈数据治理之道 序(一)

得数据者得利&#xff0c;加之数据可以入表&#xff0c;对数据重要性不言而喻&#xff0c;那么数据治理的具体诱因有哪些呢&#xff1f;&#xff1f; 1. 数据爆炸式增长&#xff1a;随着数字化时代的到来&#xff0c;大数据的产生和积累呈现爆炸式增长的趋势。组织面临着庞大、…

DFS基础——迷宫

迷宫 配套视频讲解 关于dfs和bfs的区别讲解。 对于上图&#xff0c;假设我们要找从1到5的最短路&#xff0c;那么我们用dfs去找&#xff0c;并且按照编号从大到小的顺序去找&#xff0c;首先找到的路径如下&#xff0c; 从节点1出发&#xff0c;我们发现节点2可以走&#xff…

在Linux上运行JMeter(非界面)

参考&#xff1a; 查看文件类型&#xff1a;https://www.linuxprobe.com/files-tehre-fangfa.html 华为云平台 配置&#xff1a;jdk环境、jmeter环境 jmeter配置&#xff08;在/etc/profile文件中&#xff09;&#xff1a; export JMETER_HOME/path/to/jmeter/installati…

微信小程序网络请求封装API集中管理

common/api目录下创建两个js文件 { apiList.js,api.js } API列表 // common/api/apiList.js const BASE_URL https://api.example.com; // 定义 API 的基础域名const apiList {getData: BASE_URL /data,postData: BASE_URL /postData,// 其他接口路径... };module.expor…

嵌入式学习41-数据结构2

今天学习了链表的增删改查 &#xff08;暂定&#xff01;&#xff01;后续再补内容&#xff09; 高内聚 &#xff1a;一个函数只实现一个功能 …

Docker 镜像仓库

目录 1、搭建私有 registry 服务端创建镜像仓库 客户端推送镜像 镜像导入导出 2、Nginx 代理 registry 仓库 SSL 证书 & https 协议 SSL证书 https协议 SSL 的验证流程 客户端安装 Nginx 使用 openssl 生成CA根证书和根证书key 创建 Nginx 服务证书 配置启动 N…

Airgorah:一款功能强大的WiFi安全审计工具

关于Airgorah Airgorah是一款功能强大的WiFi安全审计工具&#xff0c;该工具可以轻松发现和识别连接到无线接入点的客户端&#xff0c;并对特定的客户端执行身份验证攻击测试&#xff0c;捕捉WPA握手包&#xff0c;并尝试破解接入点的密码。在该工具的帮助下&#xff0c;广大研…

moba客户端开发面经

1、 Lua&#xff1a;元表是什么&#xff0c;怎么实现对象继承 2、OPP是什么 3、mvc结构 4、C#: list和array区别和使用场景 5、项目&#xff1a; &#xff08;1&#xff09;ui框架类设计&#xff0c;ui层级管理怎么做&#xff0c;对象初始化内存占用这样做高&#xff0c;资源是…

什么是TCP粘包/拆包?发生的原因?

一个完整的业务可能会被TCP拆分成多个包进行发送&#xff0c;也有可能把多个小的包封装成一个大的数据包发送&#xff0c;这个就是TCP的拆包和粘包问题。 原因 1、应用程序写入数据的字节大小大于套接字发送缓冲区的大小. 2、进行MSS大小的TCP分段。( MSSTCP报文段长度-TCP首…

Milvus 向量数据库:如何基于docker-compose在本地快速搭建测试环境

文章目录 1. 安装 milvus1.1. milvus v2.3.12版本信息1.2. 安装milvus步骤1.3. 安装管理工具Attu1.4. 将Attu由docker-compose启动参考Milvus 向量数据库专为向量查询与检索设计,能够为万亿级向量数据建立索引,详见介绍请参见: milvus: 专为向量查询与检索设计的向量数据库 …

在Ubuntu上使用Script命令捕获命令与其输出

在Ubuntu上使用Script命令捕获命令与其输出 起初&#xff0c;是为了记录软件的安装过程&#xff0c;就在想有没有简单高效的记录方法&#xff0c;之后就找到了script命令。 使用 script命令&#xff0c;可以很容易地记录下你在终端里所有的操作与输出&#xff0c;非常适合用来…

Sql Server小技能:row_number()函数

文章目录 引言I Sql Server: 使用row_number()函数进行编号1.1 获取出每个分组中薪资最高的员工信息1.2 获取最新船舶位置(定位)1.3 获取一个星期内离线信息II 相关表结构2.1 港区2.2 警报2.3 用户表2.4 用户权限III DBCC CHECKIDENT 标识更正see also引言 I Sql Server: …

是时候来唠一唠synchronized关键字了,Java多线程的必问考点!

写在开头 在之前的博文中&#xff0c;我们介绍了volatile关键字&#xff0c;Java中的锁以及锁的分类&#xff0c;今天我们花5分钟时间&#xff0c;一起学习一下另一个关键字&#xff1a;synchronized。 synchronized是什么&#xff1f; 首先synchronized是Java中的一个关键字…

【每日算法】理论:图像分割相关 刷题:设计链表

上期文章 【每日算法】理论&#xff1a;AIGC微调技术 刷题&#xff1a;滑动窗口、循环 文章目录 上期文章一、上期问题二、理论问题1、变形自注意力模块的特别之处2、GroundingDino模型的损失函数是什么&#xff1f;3、Dice Loss4、UNet的网络架构5、VQVAE模型相对于VAE的改进…

Tensorflow 2.0 常见函数用法(一)

文章目录 0. 基础用法1. tf.cast2. tf.keras.layers.Dense3. tf.variable_scope4. tf.squeeze5. tf.math.multiply 0. 基础用法 Tensorflow 的用法不定期更新遇到的一些用法&#xff0c;之前已经包含了基础用法参考这里 &#xff0c;具体包含如下图的方法&#xff1a; 本文介…

dbscan算法实现鸢尾花聚类(python实现)

DBscan算法原理 : dbscan算法-CSDN博客 法一(调库) : 直接调库 : import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from sklearn.cluster import DBSCAN from sklearn.decomposition import PCA from sklearn.discriminant_analysis …

leetcode 225.用队列实现栈 JAVA

题目 思路 1.一种是用双端队列&#xff08;Deque&#xff09;&#xff0c;直接就可以调用很多现成的方法&#xff0c;非常方便。 2.另一种是用普通的队列&#xff08;Queue&#xff09;,要实现栈的先入后出&#xff0c;可以将最后一个元素的前面所有元素出队&#xff0c;然后…

【NLP11-迁移学习】

1、了解迁移学习中的有关概念 1.1、预训练模型&#xff08;pretrained model) 一般情况下预训练模型都是大型模型&#xff0c;具备复杂的网络结构&#xff0c;众多的参数量&#xff0c;以及在足够大的数据集下进行训练而产生的模型。在NLP领域&#xff0c;预训练模型往往是语…