web前端之vue和echarts的堆叠柱状图顶部显示总数、鼠标悬浮工具提示、设置图例的显示与隐藏、label、legend、tooltip

MENU

  • 效果图
  • html
  • JavaScrip
  • style
  • 解析


效果图

stackedColumnChart1


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;
  },
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习笔记】04 概率论基础

04 概率论基础 概率论公理联合概率条件概率贝叶斯定理边际化独立性期望和方差模拟投掷骰子的概率随投掷次数增加的变化 概率论公理 概率&#xff08;probability&#xff09;可以被认为是将集合映射到真实值的函数。 在给定的样本空间 S \mathcal{S} S中&#xff0c;事件 A \m…

Servlet知识汇总

小王学习录 Ⅰ. servlet程序导入依赖创建目录编写代码打包程序部署程序验证简化打包和部署Ⅱ. Servlet Api1. HttpServlet2. HttpServletRequest3. HttpServletResponseⅢ. Cookie 和session1. Cookie2. Session(会话)3. session 和 cookie的区别4. session 和 cookie的联系5. …

5、Hydra与Crunch基本使用

文章目录 一、关于Hydra与Crunch二、在操作机上使用Crunch生成用户名和密码字典三、在操作机上使用Hydra对靶机FTP登录密码进行字典攻击 一、关于Hydra与Crunch Hydra&#xff08;九头蛇&#xff09;是一个相当强大的暴力密码破解工具。该工具支持几乎所有协议的在线密码破解&…

免费 2 个月!ChatGPT-4 和 Claude 2 都能用

你好&#xff0c;我是 EarlGrey&#xff0c;一名双语学习者&#xff0c;会一点编程&#xff0c;目前已翻译出版《Python 无师自通》、《Python 并行编程手册》等书籍。 点击上方蓝字关注我&#xff0c;获取最新编程及AI干货、高赞工具和项目分享。 在后台回复“books”&#xf…

一网打尽异步神器CompletableFuture

Future接口以及它的局限性 我们都知道&#xff0c;Java中创建线程的方式主要有两种方式&#xff0c;继承Thread或者实现Runnable接口。但是这两种都是有一个共同的缺点&#xff0c;那就是都无法获取到线程执行的结果&#xff0c;也就是没有返回值。于是在JDK1.5 以后为了解决这…

深入解析Selenium动作链:精通点击、拖拽、切换等操作

背景&#xff1a; 一些交互动作都是针对某个节点执行的。比如&#xff0c;对于输入框&#xff0c;我们就调用它的输入文字和清空文字方法&#xff1b;对于按钮&#xff0c;就调用它的点击方法。其实&#xff0c;还有另外一些操作&#xff0c;它们没有特定的执行对象&#xff0…

关于vs code Debug调试时候出现“找不到任务C/C++: g++.exe build active file” 解决方法

vs code Debug调试时候出现“找不到任务C/C: g.exe build active file” &#xff0c;出现报错&#xff0c;Debug失败 后来经过摸索和上网查找资料解决问题 方法如下 在Vs code的操作页面左侧有几个配置文件 红框里的是需要将要修改的文件 查看tasks.json和launch.json框选&…

跟着chatgpt一起学|1.spark入门之MLLib

chatgpt在这一章表现的不好&#xff0c;所以我主要用它来帮我翻译文章提炼信息 1.前言 首先找到spark官网里关于MLLib的链接 spark内一共有2种支持机器学习的包&#xff0c; 一种是spark.ml,基于DataFrame的&#xff0c;也是目前主流的 另一种则是spark.mllib,是基于RDD的…

Python---函数的数据---拆包的应用案例(两个变量值互换,*args, **kwargs调用时传递参数用法)

案例&#xff1a; 使用至少3种方式交换两个变量的值 第一种方式&#xff1a;引入一个临时变量 c1 10 c2 2# 引入临时变量temp temp c2 c2 c1 c1 tempprint(c1, c2) 第二种方式&#xff1a;使用加法与减法运算交换两个变量的值&#xff08;不需要引入临时变量&#xff09…

【单调栈】子数组的最小值之和

import java.util.Deque; import java.util.LinkedList;/** 参考链接&#xff1a;https://leetcode.cn/problems/sum-of-subarray-minimums/solutions/1930857/gong-xian-fa-dan-diao-zhan-san-chong-shi-gxa5/* https://leetcode.cn/problems/sum-of-subarray-minim…

[NOIP2006]明明的随机数

一、题目 登录—专业IT笔试面试备考平台_牛客网 二、代码 set去重&#xff0c;再利用vector进行排序 std::set是一个自带排序功能的容器&#xff0c;它已经按照一定的规则&#xff08;默认是元素的小于比较&#xff09;对元素进行了排序。因此&#xff0c;你不能直接对std::s…

栈和队列OJ题

目录 【1】括号匹配问题 思路分析 易错总结 Stack.h&Stack.c手撕栈 isValid括号匹配 【2】设计循环队列 今天接着栈&队列OJ题目。 【1】括号匹配问题 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff…

超实用!Spring Boot 常用注解详解与应用场景

目录 一、Web MVC 开发时&#xff0c;对于三层的类注解 1.1 Controller 1.2 Service 1.3 Repository 1.4 Component 二、依赖注入的注解 2.1 Autowired 2.2 Resource 2.3 Resource 与 Autowired 的区别 2.3.1 实例讲解 2.4 Value 2.5 Data 三、Web 常用的注解 3.1…

【研究中】sql server权限用户设置23.11.26

--更新时间2023.11.26 21&#xff1a;30 负责人&#xff1a;jerrysuse DBAliCMSIF EXISTS (select * from sysobjects where namehkcms_user)--判断是否存在此表DROP TABLE hkcms_user CREATE TABLE hkcms_user (id int primary key identity(1, 1),username char(32) NOT N…

【STM32单片机】简易计算器设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用STM32F103C8T6单片机控制器&#xff0c;使用动态数码管模块、矩阵按键、蜂鸣器模块等。 主要功能&#xff1a; 系统运行后&#xff0c;数码管默认显示0&#xff0c;输入对应的操作数进行四则运…

(1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)

电子工业出版社 Publishing House Of Electronics Industry 北京BeiJing 版次&#xff1a;2018年10月第1版 印次&#xff1a;2023年2月第22次印刷 定价&#xff1a;68元 声明 作为项目管理协会&#xff08;PMI&#xff09;的标准和指南&#xff0c;本指南是通过相关人员的…

MySQL表的操作『增删改查』

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; MySQL 学习 &#x1f383;操作环境&#xff1a; CentOS 7.6 阿里云远程服务器 &#x1f381;软件版本&#xff1a; MySQL 5.7.44 文章目录 1.创建表1.1.创建时指定属性 2.查看表2.1.查看表结构2.2.查看建表信息…

MYSQL 连接的使用

文章目录 前言连接介绍在命令提示符中使用 INNER JOINMySQL LEFT JOINMySQL RIGHT JOIN在PHP脚本中使用JOIN后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;Mysql &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握…

Kafka 如何实现顺序消息

版本说明 本文所有的讨论均在如下版本进行&#xff0c;其他版本可能会有所不同。 Kafka: 3.6.0Pulsar: 2.9.0RabbitMQ 3.7.8RocketMQ 5.0Go1.21github.com/segmentio/kafka-go v0.4.45 结论先行 Kafka 只能保证单一分区内的顺序消息&#xff0c;无法保证多分区间的顺序消息…

【咕咕送书 | 第六期】深入浅出阐述嵌入式虚拟机原理,实现“小而能”嵌入式虚拟机!

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《粉丝福利》 《linux深造日志》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 ⛳️ 写在前面参与规则引言一、为什么嵌入式系统需要虚拟化技术&#xff1f;1.1 专家推荐 二、本书适合谁&#x…