当前位置: 首页 > news >正文

echarts的横向柱状图文字省略,鼠标移入显示内容 vue3

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

文字省略

在这里插入图片描述

提示

如果是在x轴上的,就在x轴上添加triggerEvent: true,如果是y轴就在y轴添加,我是在y轴上添加的
在这里插入图片描述
并且自定义的方法(我取名为
extension

// echarts 横向省略文字 鼠标移入显示内容
export const extension = chart => {// 注意这里,是以y轴显示内容过长为例,如果是x轴的话,需要把params.componentType == 'yAxis'改为xAxis// 判断是否创建过div框,如果创建过就不再创建了// 该div用来盛放文本显示内容的,方便对其悬浮位置进行处理let elementDiv = document.getElementById("extension");if (!elementDiv) {let div = document.createElement("div");div.setAttribute("id", "extension");div.style.display = "block";document.querySelector("html").appendChild(div);}chart.on("mouseover", function (params) {console.log(params, "鼠标移入");if (params.componentType == "yAxis") {let elementDiv = document.querySelector("#extension");//设置悬浮文本的位置以及样式let elementStyle ="position: absolute;z-index: 99999;color: #fff;font-size: 12px;padding: 5px;display: inline;border-radius: 4px;background-color: #303133;box-shadow: rgba(0, 0, 0, 0.3) 2px 2px 8px";elementDiv.style.cssText = elementStyle;elementDiv.innerHTML = params.value;document.querySelector("html").onmousemove = function (event) {let elementDiv = document.querySelector("#extension");let xx = event.pageX - 10;let yy = event.pageY + 15;console.log("22", xx);elementDiv.style.top = yy + "px";elementDiv.style.left = xx + "px";};}});chart.on("mouseout", function (params) {//注意这里,我是以y轴显示内容过长为例,如果是x轴的话,需要改为xAxisif (params.componentType == "yAxis") {let elementDiv = document.querySelector("#extension");elementDiv.style.cssText = "display:none";}});
};

然后我放在末尾引入的
在这里插入图片描述

整体代码代码

我是父传子的方法,val是传递过来的数据,数据格式我放在后文展示

const init = val => {let chartDom = highStandardBar.value;let myChart = echarts.init(chartDom);let dataBg = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];// const myColor = ["#1edcaa", "#1ea5f5"].reverse();let option = {grid: {left: "15%",top: 15,bottom: 0,right: "25%"// containLabel: true},xAxis: [{type: "value",show: false},{type: "value",show: false}],yAxis: [{type: "category",inverse: true,// 触发方法triggerEvent: true,axisLabel: {show: true,margin: 2,interval: 0,// 当文字超过四个字后显示省略formatter: function (value) {if (value.length > 4) {return value.substr(0, 4) + "...";} else {return value;}},textStyle: {color: "#fff",fontSize: 12}// 调整左侧文字的3个属性,缺一不可// verticalAlign: "bottom",// align: "top",// //调整文字上右下左// padding: [10, 0, 10, 0]},splitLine: {show: false},axisTick: {show: false},axisLine: {show: false},data: val.Ydata},{type: "category",inverse: true,axisTick: "none",axisLine: "none",show: true,axisLabel: {textStyle: {color: "#b68c3a",fontSize: 14},formatter: function (value) {return "{value|" + (value / 10000).toFixed(1) + "}{unit| 万亩}";},rich: {value: {color: "#E9AA3E",fontSize: 14,fontFamily: "D-DIN-Bold"},unit: {color: "#FFF"}}},data: val.Xdata}],series: [{name: "进度部分",type: "bar",zlevel: 1,itemStyle: {borderRadius: 3,color: () => {// let num = myColor.length;return {type: "linear",x: 0,y: 0,x2: 1,y2: 1,colorStops: [{offset: 0,color: "#445555"},{offset: 1,color: "#08faf2"}]};}},barWidth: 5,barGap: "0%",data: val.Xdata},{name: "背景部分",type: "bar",xAxisIndex: 1,barWidth: 5,barGap: "-100%",data: dataBg,itemStyle: {normal: {color: "#D0DEEE",opacity: 0.1}}},// 进度条的小圆圈{name: "小圈圈",type: "scatter",emphasis: {scale: false},symbol:"image://data:image/png;base64,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",symbolSize: [20, 20],itemStyle: {color: "#FFF",shadowColor: "rgba(255, 255, 255, 1)",shadowBlur: 5,borderWidth: 1,opacity: 1},z: 2,zlevel: 10,data: val.Xdata,animationDelay: 500}],dataZoom: [// {// 	type: "slider",// 	show: val.Ydata.length > 8 ? true : false, //隐藏或显示(true)组件// 	backgroundColor: "#1c3030", // 组件的背景颜色。// 	fillerColor: "#74adb2", // 选中范围的填充颜色。// 	borderColor: "none", // 边框颜色// 	showDetail: false, //是否显示detail,即拖拽时候显示详细数值信息// 	startValue: 0, // 数据窗口范围的起始数值// 	endValue: 8, // 数据窗口范围的结束数值(一页显示多少条数据)// 	yAxisIndex: [0, 1], //控制哪个轴,如果是 number 表示控制一个轴,如果是 Array 表示控制多个轴。此处控制第二根轴// 	filterMode: "empty",// 	width: 5, //滚动条高度// 	height: "80%", //滚动条显示位置// 	right: 3, // 距离右边// 	handleSize: 0, //控制手柄的尺寸// 	zoomLoxk: true, // 是否锁定选择区域(或叫做数据窗口)的大小// 	top: "middle"// },{type: "slider",show: val.Ydata.length > 8 ? true : false,top: "middle",showDetail: false,brushSelect: false,orient: "vertical",backgroundColor: "#172b2c",showDataShadow: false,startValue: 0,endValue: 8,borderColor: "transparent",fillerColor: "#74adb2",zoomLock: true,handleSize: "92%",borderRadius: 100,width: 5, //滚动条高度height: "80%", //滚动条显示位置right: 3, // 距离右边handleStyle: {borderWidth: "none"},handleColor: "#74adb2",handleIcon: "path://M512,512m-448,0a448,448,0,1,0,896,0a448,448,0,1,0,-896,0Z"},{//没有下面这块的话,只能拖动滚动条,鼠标滚轮在区域内不能控制外部滚动条type: "inside",yAxisIndex: [0, 1], //控制哪个轴,如果是 number 表示控制一个轴,如果是 Array 表示控制多个轴。此处控制第二根轴zoomOnMouseWheel: false, //滚轮是否触发缩放moveOnMouseMove: true, //鼠标移动能否触发平移moveOnMouseWheel: true //鼠标滚轮能否触发平移}]};extension(myChart);option && myChart.setOption(option);
};

数据格式
在这里插入图片描述

相关文章:

echarts的横向柱状图文字省略,鼠标移入显示内容 vue3

效果图 文字省略 提示 如果是在x轴上的,就在x轴上添加triggerEvent: true,如果是y轴就在y轴添加,我是在y轴上添加的 并且自定义的方法(我取名为extension) // echarts 横向省略文字 鼠标移入显示内容 export const extension…...

laravel8安装多应用多模块(笔记三)

先安装laravel8 Laravel 安装(笔记一)-CSDN博客 一、进入项目根目录安装 laravel-modules composer require nwidart/laravel-modules 二、 大于laravel5需配置provider,自动生成配置文件 php artisan vendor:publish --provider"Nwid…...

Vue组件的几种通信方式

这里写目录标题 Vue组件的几种通信(数据传递)方式非父子组件间通信(Bus事件总线)介绍实例 非父子通信-provide&inject1.作用2.场景3.语法4.注意 父子组件间的通信固定props属性名(v-model)介绍实例 不固…...

golang panic关键词执行原理与代码分析

使用的go版本为 go1.21.2 首先我们写一个简单的panic调度与捕获代码 package mainfunc main() {defer func() {recover()}()panic("panic test") }通过go build -gcflags -S main.go获取到对应的汇编代码 可以看到当我们调度panic时,Go的编译器会将这段…...

Error running Tomcat8: Address localhost:1099 is already in use 错误解决

摘要: 有时候运行web项目的时候会遇到 Error running Tomcat8: Address localhost:1099 is already in use 的错误,导致web项目无法运行。这篇 blog 介绍了解决办法。 有时候运行web项目的时候会遇到 Error running Tomcat8: Address localhost:1099 is already in …...

android studio如何给安卓虚拟机发送短信

首先,cd到指定路径 默认情况下,Android SDK通常安装在以下位置: Windows:C:\Users\YourUsername\AppData\Local\Android\Sdk\platform-toolsmacOS:/Users/YourUsername/Library/Android/sdk/platform-toolsLinux&…...

立体仓库PLC控制系统子站诊断功能块

// //获取profinet网络已组态站信息 // //MODE:0自动辨识是获取组态信息还是错误信息 //MODE:1获取IO 设备从站已组态 //MODE:2获取IO 设备 从站故障 //MODE:3获取IO 设备 从站已禁用 //MODE:4获取IO 设备 从站存在 //MODE:5获取IO 设备 从站出现问题 // //站点状态字节位含义 …...

NFT Insider115:The Sandbox开设元宇宙Diorama快闪店,​YGG Web3 游戏峰会已开幕

引言:NFT Insider由NFT收藏组织WHALE Members、BeepCrypto联合出品,浓缩每周NFT新闻,为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周报将从NFT市场数据,艺术新闻类,游戏新闻类,虚拟世界类&#…...

【Redis篇】简述Java中操作Redis的方法

文章目录 🎄简述Jedis🎄Jedis优点🍔使用Jedis连接Redis⭐进行测试🎈进行测试 Redis(Remote Dictionary Server)是一种流行的高性能内存数据库,广泛应用于各种应用程序和系统中。作为Java开发人员…...

深度解读英伟达新一轮对华特供芯片H20、L20、L2的定位

大家好,我是极智视界,欢迎关注我的公众号,获取我的更多前沿科技分享 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码和资源下载,链接:https://t.zsxq.com/0aiNxERDq 因为一直从事 AI 工…...

一起学docker系列之九docker运行mysql 碰到的各种坑及解决方法

目录 前言1 Docker 运行mysql命令2 坑一:无法读取/etc/mysql/conf.d目录的问题3 坑二:/tmp/ibnr0mis 文件无法创建/写入的问题4 坑三:Navicat 连接错误(1045-access denied)5 坑四:MySQL 登录失败问题结语 …...

利用Nginx与php处理方式不同绕过Nginx_host实现SQL注入

目录 首先需要搭建环境 nginxphpmysql环境: 搭建网站 FILTER_VALIDATE_EMAIL 绕过 方法1:冒号号分割host字段 方法2:冒号号分割host字段 方法3:SNI扩展绕过 首先需要搭建环境 nginxphpmysql环境: php安装包&a…...

分割list 批量插入数据指定条数数据

一、代码层面切割好list&#xff0c;然后插入 // package org.apache.commons.collections4; 先将list切成1000条一份 List<List<DeptDO>> p1 ListUtils.partition(deptList, 1000); for (List<DeptDO> deptDOS : p1) { // 1000条一次批量插入systemDeptMa…...

Arduino库之 LedControl 库说明文档

LedControl 库最初是为基于 8 位 AVR 处理器的 Arduino 板编写的。用于通过MAX7219芯片控制LED矩阵和7段数码管。但由于该代码不使用处理器的任何复杂的内部功能&#xff0c;因此具有高度可移植性&#xff0c;并且应该在任何支持 和 功能的 Arduino&#xff08;类似&#xff09…...

Hadoop学习总结(MapReduce的数据去重)

现在假设有两个数据文件 file1.txtfile2.txt2018-3-1 a 2018-3-2 b 2018-3-3 c 2018-3-4 d 2018-3-5 a 2018-3-6 b 2018-3-7 c 2018-3-3 c2018-3-1 b 2018-3-2 a 2018-3-3 b 2018-3-4 d 2018-3-5 a 2018-3-6 c 2018-3-7 d 2018-3-3 c 上述文件 file1.txt 本身包含重复数据&…...

ctfshow sql

180 过滤%23 %23被过滤&#xff0c;没办法注释了&#xff0c;还可以用’1’1来闭合后边。 或者使用--%0c-- 1%0corder%0cby%0c3--%0c--1%0cunion%0cselect%0c1,2,database()--%0c--1%0cunion%0cselect%0c1,2,table_name%0cfrom%0cinformation_schema.tables%0cwhere%0ctable_…...

Java实现求最大值

1 问题 接收用户输入的3个整数&#xff0c;如何将最大值作为结果输出。 2 方法 采用“截图文字代码”的方式描述。 引入输入包调用main()函数&#xff0c;提示并接收用户输入的3个整数&#xff0c;并交由变量a b c来保存。对接收的3个数据进行比较&#xff0c;先比较a和b&#…...

NX二次开发UF_CURVE_ask_curve_inflections 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_ask_curve_inflections Defined in: uf_curve.h int UF_CURVE_ask_curve_inflections(tag_t curve_eid, double proj_matrx [ 9 ] , double range [ 2 ] , int * num_infpt…...

一个基于RedisTemplate静态工具类

每次是用RedisTemplate的时候都需要进行自动注入实在是太麻烦了&#xff0c;于是找到一个讨巧的办法。 import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.…...

【计算机网络笔记】数据链路层——差错编码

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT&#xff0c;橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版&#xff1a;职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...

【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统

Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...