web前端之vue和echarts的堆叠柱状图顶部显示总数、鼠标悬浮工具提示、设置图例的显示与隐藏、label、legend、tooltip
MENU
- 效果图
- html
- JavaScrip
- style
- 解析
效果图
html
<template><div><div><div id="idStackedColumnChart" style="width: 100%; height: 680px"></div></div></div>
</template>
JavaScrip
export default {name: "stackedColumnChart",mounted() {this.$nextTick(() => {this.handleStackedColumnChart();});},methods: {/*** 纵向数组求和* @param {Array} list*/verticalArraySummation(list) {let sumArray = [];for (let i = 0; i < list[0].data.length; i++) {let sum = 0;for (let j = 0; j < list.length; j++) sum += list[j].data[i];sumArray.push(sum);}return sumArray;},/*** 初始化图表*/handleStackedColumnChart() {let series = [{name: "示例1",color: "#ff0000",data: [120, 132, 101, 134, 90, 230, 210],},{name: "示例2",color: "#00ff00",data: [220, 182, 191, 234, 290, 330, 310],},{name: "示例3",color: "#0000ff",data: [150, 232, 201, 154, 190, 330, 410],},],len = series.length,zonghe = this.verticalArraySummation(series);series = series.map((item) => {return {name: item.name,itemStyle: {color: item.color,},data: item.data,};});let lenItem = {...series[len - 1],label: {normal: {show: true,position: "top",// 先把所有项的总和算出来,按照顺序放到zonghe数组中// 然后在方法中用下标对应上总和方法// return出来就是label文字的现实// formatter(params) {// return zonghe[params.dataIndex];// },formatter: (params) => zonghe[params.dataIndex],},},};series[len - 1] = lenItem;this.$beInMotionEcharts("idStackedColumnChart", "stackedColumnChart", {title: {text: "堆叠柱形图",},xAxis: [{data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],},],legend: {// 设置show为false,即隐藏所有图例show: true,data: ["示例1", "示例2", "示例3"],},series,// 鼠标悬浮工具提示tooltip: {trigger: "axis",axisPointer: {type: "shadow",},formatter(params) {let res = `<div style="font-weight: 700;">${params[0].name}</div>`,sum = 0;for (let i = 0; i < params.length; i++) {let item = params[i],items = series[item.seriesIndex];if (items.name !== null) {sum += item.data;res += `<div><span class="tooltip" style="background: ${item.color};"></span>${item.seriesName}: ${item.data}</div>`;}}res += `<div><span class="tooltip" style="background: transparent;"></span>总计: ${sum}</div>`;return res;},},});},},
};
style
.tooltip {display: inline-block;margin-right: 5px;border-radius: 50%;width: 10px;height: 10px;
}
解析
网上好多文章用的都是echarts中的
barGap: '-100%'让两个系列的柱子重叠,从而实现顶部显示总数。
但是这种方法只适合X轴只有一个堆叠柱状图。
现在的需求是一个X轴项,有两个或两个以上堆叠柱状图,这种方法并不适用该需求。
这种方法的思路是单独再造一个柱状图,然后移动该柱状图的位置,从而实现重叠显示。
既然这种思路不适用该需求,转变思路,直接改变柱状图的lable显示即可。
方式一(不推荐的方式)
方式二
概述
label提供了formatter方法来对显示的文字进行处理,只需要在堆叠柱状图的
最后一个数据项上添加以下代码即可。
这样基本完事,后面的第二个柱状图也是这样。只要放到zonghe这个数组中的数据跟你显示的数据能一一对应上,数据就不会错,鼠标悬浮上显示的tooltip数据也不会错。
顶部显示
label: {normal: {show: true,position: "top",// formatter(params) {// return zonghe[params.dataIndex];// },formatter: (params) => zonghe[params.dataIndex],},
}
鼠标悬浮工具提示
tooltip: {trigger: "axis",axisPointer: {type: "shadow",},formatter(params) {let res = `<div style="font-weight: 700;">${params[0].name}</div>`,sum = 0;for (let i = 0; i < params.length; i++) {let item = params[i],items = series[item.seriesIndex];if (items.name !== null) {sum += item.data;res += `<div><span class="tooltip" style="background: ${item.color};"></span>${item.seriesName}: ${item.data}</div>`;}}res += `<div><span class="tooltip" style="background: transparent;"></span>总计: ${sum}</div>`;return res;},
}
相关文章:
web前端之vue和echarts的堆叠柱状图顶部显示总数、鼠标悬浮工具提示、设置图例的显示与隐藏、label、legend、tooltip
MENU 效果图htmlJavaScripstyle解析 效果图 html <template><div><div><div id"idStackedColumnChart" style"width: 100%; height: 680px"></div></div></div> </template>JavaScrip export default {…...
Excel表中合并两个Sheet的方法?
按AltF11,调出Visual Basic 界面。 在左侧窗口中,右键选择“插入”—“模块”: 将如下代码粘贴进去,点击运行按钮,完成数据表合并。 Sub MergeAllSheetsInThisWorkbook() On Error Resume Next Application.ScreenU…...
1个10进制数转为2进制和转为8进制, 各位上数字后2进制的值与8进制的值相同的值有 1 8 9 64 问第23个值是多少?
1个10进制数转为2进制和转为8进制, 各位上数字后2进制的值与8进制的值相同的值有 1 8 9 64 问第23个值是多少? #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <malloc.h> #include<cmath&g…...
27、Nuxt.js项目整合ElementUI组件库
参考element-ui官网安装组件库 项目中新建插件引入element-ui plugins\element-ui.js import Vue from vue; import ElementUI from element-ui;Vue.use(ElementUI);nuxt.config.js plugins: ["/plugins/element-ui.js"],build: {// 将位于 node_modules 目录下的…...
设计问卷调查问题的9大技巧!技巧1:明确目标与问题
我们在设计问卷调查时要考虑很多因素,其中问卷问题是需要关注的重要因素之一。有效的问题能够帮助我们获取到有用的信息,让问卷结论更准确。怎么设计问卷调查的问题呢?本文就为大家提供几个设计问题时的神仙技巧! Tip1࿱…...
java代码调用twitter-api用例实战
一、申请twitter开发者账号 首先先申请twitter开发者免费的API,要填写申请的内容,放心大胆地写,申请完,会提供免费的API接口。 以下是我申请到的三个免费API 申请完开始进行测试调用。 读官方文档账户认证那块:https…...
UniWebView的更新日志【### 5.3.0 (28 Jan, 2023)】
UniWebView的更新日志 # Release Note ### 5.3.0 (28 Jan, 2023) #### Add * Support for customization of Kotlin and Android Browser package versions. This can help to resolve the conflict with other plugins which use another version of these packages. ###…...
【VScode】安装配置、插件及远程SSH连接
一、VSCode安装 二、配置安装插件 三、配置远程连接SSH 四、MinGW 一、VSCode安装 VS官网 Visual Studio Code - Code Editing. Redefined下载安装包: 二、配置安装插件 安装中文插件 配置字体为20 配置文件–>首选项->设置->Font Size为20 设置 VSC…...
IOS Frida 常用脚本
调用堆栈 console.log("bt:" + Thread.backtrace(this.context,Backtracer.ACCURATE).map(DebugSymbol.fromAddress).join(\n\t)); Hook 调用,修改返回值 // Get a reference to the openURL selectorvar openURL = ObjC.classes.UIApplication["- openURL:&qu…...
vuex actions异步请求 跟module模块化
actions vuex里面的异步操作,接受参数context ,参数有commt,getters,state 列如:调用 mutations 方法实现修改state 数据 (只能通过mutations 修改 state 数据) state:()>{count: 0, }mutations: {addCount(state)…...
医学图像分割:U_Net 论文阅读
“U-Net: Convolutional Networks for Biomedical Image Segmentation” 是一篇由Olaf Ronneberger, Philipp Fischer, 和 Thomas Brox发表的论文,于2015年在MICCAI的医学图像计算和计算机辅助干预会议上提出。这篇论文介绍了一种新型的卷积神经网络架构——U-Net&a…...
从0到0.01入门 Webpack| 008.精选 Webpack面试题
🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…...
免费不限字数的文本转语音AI配音工具,无需安装
上周给大家分享了AI绘本故事制作,很多小伙伴让我,推荐一款免费的AI配音,音色质量富有情感语调,而且手机上就能用的文本转语音工具。 OK,那么今天就给小伙伴们推荐一款我经常自用的AI配音工具,无需安装下载&…...
开源大模型框架llama.cpp使用C++ api开发入门
llama.cpp是一个C编写的轻量级开源类AIGC大模型框架,可以支持在消费级普通设备上本地部署运行大模型,以及作为依赖库集成的到应用程序中提供类GPT的功能。 以下基于llama.cpp的源码利用C api来开发实例demo演示加载本地模型文件并提供GPT文本生成。 项…...
Qt 网络通信
获取本机网络信息 (1)在 .pro 文件中加入 QT network(2) #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QDebug> #include <QLabel> #include <QLineEdit> #include <QPu…...
基恩士软件的基本操作(五,日志记录与使用)
目录 基恩士是如何保存日志的? 如何使用日志功能 查看DM10的值1秒加1的记录日志 设定id与储存位置 软元件设定( 日志ID有10个(0~10),每一个ID最多添加512个软元件) 设定触发 执行日志的梯形图程序 触…...
MySQL 8 手动安装后无法启动的问题解决
开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,(…...
难怪被人卷了不知道啊!这么学自动化测试,一个星期就搞定了!!!
目前自动化测试并不属于新鲜的事物,或者说自动化测试的各种方法论已经层出不穷,但是,能够明白自动化测试并很好落地实施的团队还不是非常多,我们接来下用通俗的方式来介绍自动化测试…… 首先我们从招聘岗位需求说起。看近期的职…...
每日OJ题_算法_双指针⑦力扣15. 三数之和
目录 力扣15. 三数之和 解析代码 力扣15. 三数之和 难度 中等 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三…...
【计算机网络学习之路】日志和守护进程
文章目录 前言一. 日志介绍二. 简单日志1. 左字符串2. 右字符串 三. 守护进程1. ps -axj命令2. 会话扩展命令 3. 创建守护进程 结束语 前言 本系列文章是计算机网络学习的笔记,欢迎大佬们阅读,纠错,分享相关知识。希望可以与你共同进步。 本…...
鱼皮超级智能体文件读写报错
Spring AI Kryo 序列化报错:Encountered unregistered class ID 解决方案在开发 Spring AI 聊天记忆功能时,采用 Kryo 实现消息的文件持久化存储,运行过程中突然报出 com.esotericsoftware.kryo.KryoException: Encountered unregistered cl…...
音视频AI工程化最后一公里(SITS2026原生框架实测报告:FFmpeg vs WebAssembly vs 原生Kernel Mode)
第一章:音视频AI工程化最后一公里的挑战与SITS2026原生框架定位 2026奇点智能技术大会(https://ml-summit.org) 在音视频AI大规模落地过程中,“最后一公里”并非指部署时长或物理距离,而是指模型能力与真实业务场景之间不可忽视的语义鸿沟—…...
机器学习中的常用算法(非传统算法)
机器学习中的常用算法:探索智能决策的核心工具 在人工智能快速发展的今天,机器学习已成为推动技术进步的核心动力。与传统算法不同,机器学习算法能够从数据中自动学习规律,并做出预测或决策。其中,一些非传统算法因其…...
STM32解析Futaba S.Bus协议:从硬件连接到数据解析全流程
1. 硬件连接与信号处理 第一次接触Futaba遥控器的S.Bus协议时,最让我头疼的就是这个"负逻辑"问题。和常见的串口通信不同,S.Bus的信号电平是反相的——高电平表示0,低电平表示1。这种设计在航模领域很常见,主要是为了抗…...
FastbootEnhance完整指南:Windows平台最友好的Fastboot工具箱实战解析
FastbootEnhance完整指南:Windows平台最友好的Fastboot工具箱实战解析 【免费下载链接】FastbootEnhance A user-friendly Fastboot ToolBox & Payload Dumper for Windows 项目地址: https://gitcode.com/gh_mirrors/fa/FastbootEnhance FastbootEnhanc…...
Keil5项目模块化实战:将STM32标准外设驱动打包成GCC编译的.a静态库
Keil5项目模块化实战:将STM32标准外设驱动打包成GCC编译的.a静态库 在嵌入式开发中,随着项目规模扩大和复杂度提升,代码复用和模块化管理变得尤为重要。将常用的外设驱动(如GPIO、USART等)编译成静态库(.a文…...
【RK3588】开发板调试串口切换实战:从UART2到UART3的完整指南
1. 为什么需要切换调试串口? 很多开发者第一次接触RK3588开发板时,可能会好奇为什么默认的调试串口是UART2。这其实和开发板的设计有关——正点原子等厂商在设计开发板时,通常会选择最稳定的串口作为默认调试接口。但实际项目中,…...
高性能FMC接口扩展卡详解:高速ADC/DAC设计、工程应用与参数对比
随着通信、雷达、测控等领域对信号带宽、同步精度与实时处理能力的要求持续提升,传统低速采集与信号生成方案在带宽、时延和集成度上已难以满足新一代系统需求。更高采样率、更高分辨率、更低噪声、更稳定可靠的高速信号收发模块,成为硬件平台设计的核心…...
从数据困惑到文本洞察:KH Coder如何让普通人也能做专业文本分析
从数据困惑到文本洞察:KH Coder如何让普通人也能做专业文本分析 【免费下载链接】khcoder KH Coder: for Quantitative Content Analysis or Text Mining 项目地址: https://gitcode.com/gh_mirrors/kh/khcoder 你是否曾面对成百上千页的文档、海量的用户评论…...
第9章 函数-9.4 函数参数的传递
在Python中,根据实参的数据类型,可以将函数参数的传递模式分为2种,一是值传递,其包括整数、浮点数、字符串和元组;二是引用传递,其包括列表、字典、集合和对象。值传递和引用传递的区别是,函数参…...
