vue2使用echarts自定义tooltip内容

news2025/2/3 10:14:25

先上最终效果图
#在这里插入图片描述

实现过程:

一、下载引入echarts

  1. 下载
npm install echarts --save
  1. 在main.js中引入
import * as echarts from "echarts";
Vue.prototype.$echarts = echarts;

二、使用

<template>
  <div id="myechart" style="width: 100%;height: 350px;"></div>
</template>

<script>
  export default {
    data() {
      return {
        powerEchartData: [
          { "thisPower": 220, "voltage": 227.30, "current": 2.00, "temperature": "6", "portTemperature": "7", "state": "1", "port": "00", "occupyTime": "", "chargeTime": "0小时0分钟10秒", "chargeAmount": 0.00, "createTime": "2024-02-02 15: 49:58" },
          { "thisPower": 230, "voltage": 233, "current": 2.00, "temperature": "6", "portTemperature": "7", "state": "1", "port": "00", "occupyTime": "", "chargeTime": "0小时0分钟10秒", "chargeAmount": 0.00, "createTime": "2024-02-02 15: 59:58" },
          { "thisPower": 240, "voltage": 223, "current": 2.00, "temperature": "6", "portTemperature": "7", "state": "1", "port": "00", "occupyTime": "", "chargeTime": "0小时0分钟10秒", "chargeAmount": 0.00, "createTime": "2024-02-02 16: 09:58" },
        ],
      }
    },
    mounted() {
      this.$nextTick(() => {
        this.renderChart();
      })
    },
    methods: {
      renderChart() {
        // 基于准备好的dom,初始化echarts实例
        let myChart = this.$echarts.init(document.getElementById("myechart"));
        let xAxisData = this.powerEchartData.map(ele => ele.createTime);

        // 绘制图表
        var option = {
          tooltip: {
            trigger: 'axis',
            show: true,
            // 注意,这里是formatter 不是valueFormatter
            formatter: (params) => {
              // 获取到的数据不需要做复杂处理
              // let str = '';
              // let unit = ['', 'W', 'V', 'A', '度', '度', '', '', '', '', '', '度']
              // params.forEach((ele, idx) => {
              //   str += ele.seriesName + ele.value + unit[idx] + '<br />'
              // });
              // return str;
              // 获取到的数据需要处理
              return `
                ${params[10].value} <br />
                ${params[0].seriesName}: ${params[0].value}W <br />
                ${params[1].seriesName}: ${params[1].value}V <br />
                ${params[2].seriesName}: ${params[2].value}A <br />
                ${params[3].seriesName}: ${params[3].value}度 <br />
                ${params[4].seriesName}: ${params[4].value}度 <br />
                ${params[5].seriesName}: ${params[5].value == 1 ? '充电中' : params[5].value == 2 ? '浮充' : ''} <br />
                ${params[6].seriesName}: ${params[6].value < 10 ? '0' + (Number(params[6].value) + 1).toString() : params[6].value} <br />
                ${params[7].seriesName}: ${params[7].value}分 <br />
                ${params[8].seriesName}: ${params[8].value} <br />
                ${params[9].seriesName}: ${params[9].value}度 <br />
              `;
            }
          },
          xAxis: {
            type: 'category',
            alignTicks: false,
            data: xAxisData,
            axisTick: {
              show: true,
            },
          },
          yAxis: [{
            type: 'value',
            name: '功率',
            axisLine: {
              show: true
            },
            // min: 0, // 最小值
            // max: 300, // 最大值
            // interval: 50, // 间隔值
            axisLabel: { // Y轴标签的相关设置
              formatter: function (value) {
                return value + 'W'
              },
              color: '#f1072c'
            },
          }, {
            type: 'value',
            name: '电压',
            axisLine: {
              show: true
            },
            min: 0,
            // max: 300,
            interval: 50,
            axisLabel: {
              formatter: function (value) {
                return value + 'V'
              },
              color: '#3e8ae9'
            },
          }],
          series: [
            {
              name: '功率',
              type: 'line',
              yAxisIndex: 0,
              data: this.powerEchartData.map(ele => ele.thisPower)
            },
            {
              name: '电压',
              type: 'line',
              yAxisIndex: 1,
              data: this.powerEchartData.map(ele => ele.voltage),
            },
            // 以下数据在tooltip中展示 但不在图表中展示
            {
              name: '电流',
              type: 'line',
              yAxisIndex: 1,
              data: this.powerEchartData.map(ele => ele.current),
              symbolSize: 0, // symbol的大小设置为0让线的小圆点不显示
              showSymbol: false, // 不显示symbol不显示
              lineStyle: {
                width: 0, // 线宽是0不显示线
                color: 'rgba(0, 0, 0, 0)' // 线的颜色是透明的
              }
            },
            {
              name: '环境温度',
              type: 'line',
              yAxisIndex: 1,
              data: this.powerEchartData.map(ele => ele.temperature),
              symbolSize: 0,
              showSymbol: false,
              lineStyle: {
                width: 0,
                color: 'rgba(0, 0, 0, 0)'
              }
            },
            {
              name: '端口温度',
              type: 'line',
              yAxisIndex: 1,
              data: this.powerEchartData.map(ele => ele.portTemperature),
              symbolSize: 0,
              showSymbol: false,
              lineStyle: {
                width: 0,
                color: 'rgba(0, 0, 0, 0)'
              }
            },
            {
              name: '端口状态',
              type: 'line',
              yAxisIndex: 1,
              data: this.powerEchartData.map(ele => ele.state),
              symbolSize: 0,
              showSymbol: false,
              lineStyle: {
                width: 0,
                color: 'rgba(0, 0, 0, 0)'
              }
            },
            {
              name: '端口',
              type: 'line',
              yAxisIndex: 1,
              data: this.powerEchartData.map(ele => ele.port),
              symbolSize: 0,
              showSymbol: false,
              lineStyle: {
                width: 0,
                color: 'rgba(0, 0, 0, 0)'
              }
            },
            {
              name: '充电总时长',
              type: 'line',
              yAxisIndex: 1,
              data: this.powerEchartData.map(ele => ele.occupyTime),
              symbolSize: 0,
              showSymbol: false,
              lineStyle: {
                width: 0,
                color: 'rgba(0, 0, 0, 0)'
              }
            },
            {
              name: '已充时长',
              type: 'line',
              yAxisIndex: 1,
              data: this.powerEchartData.map(ele => ele.chargeTime),
              symbolSize: 0,
              showSymbol: false,
              lineStyle: {
                width: 0,
                color: 'rgba(0, 0, 0, 0)'
              }
            },
            {
              name: '累积电量',
              type: 'line',
              yAxisIndex: 1,
              data: this.powerEchartData.map(ele => ele.chargeAmount),
              symbolSize: 0,
              showSymbol: false,
              lineStyle: {
                width: 0,
                color: 'rgba(0, 0, 0, 0)'
              }
            },
            {
              name: '',
              type: 'line',
              yAxisIndex: 1,
              data: this.powerEchartData.map(ele => ele.createTime),
              symbolSize: 0,
              showSymbol: false,
              lineStyle: {
                width: 0,
                color: 'rgba(0, 0, 0, 0)'
              }
            },
          ]
        };

        myChart.setOption(option);
      }
    }
  }
</script>

三、其他
若报错:[Vue warn]: Error in v-on handler: "Error: Initialize failed: invalid dom."
原因:在渲染前就执行这个方法
解决方案:等元素被初始化成功后执行,使用 this.$nextTick(() => {})

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

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

相关文章

[香橙派开发系列]使用蓝牙和手机进行信息的交换

文章目录 前言一、HC05蓝牙模块1.HC05概述2.HC05的连接图3.进入HC05的命令模式4.常用的AT指令4.1 检查AT是否上线4.2 重启模块4.3 获取软件版本号4.4 恢复默认状态4.5 获取蓝牙的名称4.6 设置蓝牙模块的波特率4.7 查询蓝牙的连接模式4.8 查询模块角色 5.连接电脑6.通过HC05发送…

Python爬虫的基本原理

我们可以把互联网比作一张大网&#xff0c;而爬虫&#xff08;即网络爬虫&#xff09;便是在网上爬行的蜘蛛。把网的节点比作一个个网页&#xff0c;爬虫爬到这就相当于访问了该页面&#xff0c;获取了其信息。可以把节点间的连线比作网页与网页之间的链接关系&#xff0c;这样…

C#——三角形面积公式

已知三角形的三个边&#xff0c;求面积&#xff0c;可以使用海伦公式。 因此&#xff0c;可以执行得到三角形面积公式的计算方法代码如下&#xff1a; /** / <summary>* / 三角形面积公式* / </summary>* / <param name"a">边长a</param>*…

在idea中使用maven编译包,直接打包到远程环境上去了

执行指令 mvn clean install编译包的结果指向远程环境上去了 报错信息 No SSH configuration for 修改idea远程连接配置&#xff0c;改回编包打包到本地。 settings -> Build,Execution,Deployment -> Run Targets 删除掉这部分配置即可。 如果想改成直接编包到远程…

latex表格使用总结

参考博客 https://blog.csdn.net/TH_guan/article/details/124878398 测试了一下latex里面表格的用法 \documentclass{article} \usepackage{booktabs} % 导入三线表需要的宏包 \usepackage{booktabs} % 导入三线表需要的宏包 \usepackage{longtable}% 导入跨页表格所需宏包 …

【打赏】完美运营的最新视频打赏系统

完美运营的最新视频打赏系统优于市面上95%的打赏系统&#xff0c;与其他打赏系统相比&#xff0c;功能更加强大&#xff0c;完美运营且无bug。支付会调、短链接生成、代理后台、价格设置和试看功能等均没有问题。 以上为原简介&#xff0c;经测试验证。成功搭建并可以正常进入…

【GitHub项目推荐--大语言模型课程】【转载】

Large Language Model Course Large Language Model Course&#xff08;大型语言模型课程&#xff09;是一个开源项目&#xff0c;该课程分为三个部分&#xff1a; LLM 基础&#xff1a;涵盖了数学、Python 和神经网络的基础知识。 LLM 科学家&#xff1a;专注于学习如何使用…

DBeaver连接ClickHouse,时间少了8小时

文章目录 业务场景问题描述解决办法 业务场景 表字段time&#xff0c;类型为Datetime&#xff0c;插入时间格式为“yyyy-MM-dd HH:mm:ss” 问题描述 插入表中的时间比正常给的时间少了8小时。如&#xff0c;给定时间为&#xff1a; 2024-01-30 14:52:08 在表中显示的时间为&…

生物素-PEG4-酪胺,Biotin-PEG4-TSA,应用于酶联免疫吸附实验

您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;生物素-PEG4-酪胺&#xff0c;Biotin-PEG4-Tyramide&#xff0c;Biotin-PEG4-TSA 一、基本信息 产品简介&#xff1a;Biotin PEG4 Tyramine is a reagent used for tyramine signal amplification (TSA) through ca…

前端通过nginx,访问一个文件夹里面的全部数据,nginx 咋配置

目录 1 问题2 实现 1 问题 前端通过nginx,访问一个文件夹里面的全部数据&#xff0c;nginx 咋配置 2 实现 location /logs {alias /mnt/www/logs/;autoindex on; }

【Git】03 图形化工具

文章目录 一、右击菜单二、打开仓库三、可视化所有分支历史四、总结 一、右击菜单 二、打开仓库 三、可视化所有分支历史 四、总结 图形化工具了解一下&#xff0c;要懂得在哪里能找到。

echarts条形图添加滚动条

效果展示: 测试数据: taskList:[{majorDeptName:测试,finishCount:54,notFinishCount:21}, {majorDeptName:测试,finishCount:54,notFinishCount:21}, {majorDeptName:测试,finishCount:54,notFinishCount:21}, {majorDeptName:测试,finishCount:54,notFinishCount:21}, {maj…

帅气的性能监控平台Grafana(Windows下使用Grafana监控系统指标与GPU指标)

帅气的性能监控平台Grafana&#xff08;Windows下使用Grafana监控系统指标与GPU指标&#xff09; 前情提要 系统环境准备 windows_exporter下载 nvidia_gpu_exporter下载 prometheus下载 Grafana下载 安装指导 windows_exporter安装与nvidia_gpu_exporter安装 promethe…

leetcode热题100.二叉树中的最大路径和

Problem: 124. 二叉树中的最大路径和 文章目录 题目解题方法复杂度Code 题目 二叉树中的 路径 被定义为一条节点序列&#xff0c;序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点&#xff0c;且不一定经过根节点。 …

项目安全问题及解决方法------使用合适的算法

Spring Security 已经废弃了 MessageDigestPasswordEncoder&#xff0c;推荐使用 BCryptPasswordEncoder private static BCryptPasswordEncoder passwordEncoder new BCryptPasswordEncoder(); GetMapping("performance")public void performance() {StopWatch st…

抖音短视频矩阵营销系统源头独立开发搭建

开发背景 抖音短视频矩阵系统源码开发采用模块化设计&#xff0c;包括账号分析、营销活动、数据监控、自动化管理等功能。通过综合分析账号数据&#xff0c;快速发现账号的优势和不足&#xff0c;并提供全面的营销方案&#xff0c;以提高账号曝光率和粉丝数量。同时&#xff0c…

Axure 动态面板初使用-实现简单的tab切换页面效果

使用工具版本 Axure 9 实现的效果 步骤过程 1、打开Axure 9&#xff0c;默认进入一个空白页&#xff0c;首先从元件库拉一个动态面板到页面中&#xff0c;位置肯定是C位咯~ 2、将面板尺寸调整一下&#xff0c;设置成你喜欢的数字&#xff0c;比如我就喜欢800600 3、然后…

MySQL原理(五)事务

一、介绍&#xff1a; 1、介绍&#xff1a; 在计算机术语中&#xff0c;事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务是恢复和并发控制的基本单位。 2、事务的4大特性 原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性…

2023年09月CCF-GESP编程能力等级认证Python编程五级真题解析

Python等级认证GESP(1~6级)全部真题・点这里 一、单选题(共15题,共30分) 第1题 近年来,线上授课变得普遍,很多有助于改善教学效果的设备也逐渐流行,其中包括比较常用的手写板,那么它属于哪类设备?( ) A:输入 B:输出 C:控制 D:记录 答案:A 第2题 以下关于…

【Git】04 .git目录

文章目录 一、.git目录二、切换分支三、仓库配置信息四、引用五、对象六、总结 一、.git目录 ls -a .git/./ COMMIT_EDITMSG description hooks/ info/ objects/ ../ config HEAD index logs/ refs/二、切换分支 cat .git/HEAD #…