多条折线图修改图例以及自定义tooltip

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 在图例后面添加所有数据之和
  • 修改之后 series 中的name之后导致tooltip也加上了
  • 重新自定义tooltip,去掉总量统计

核心代码

  1. 监听数据改变计算总量
  2. 修改name字段
  3. 自定义 tooltip
 // 计算每条线的总和
const sum1 = this.VALUE1.reduce((acc, val) => acc + val, 0);
const sum2 = this.VALUE2.reduce((acc, val) => acc + val, 0);
const sum3 = this.VALUE3.reduce((acc, val) => acc + val, 0);series: [{name: `火灾总量(${sum1})`,data: this.VALUE1,},{name: `轻微火灾(${sum2})`,data: this.VALUE2,},{name: `非轻微火灾(${sum3})`,data: this.VALUE3,},],tooltip: {show: "true",trigger: "axis",textStyle: {fontSize: this.fontSize(0.15),},// ☆☆☆☆☆☆自定义tooltip,去掉图例后面添加的总数值统计formatter: function (params) {console.log("params", params);let content = "";params.forEach((param) => {const value = param.value;const seriesName = param.seriesName;const marker = param.marker;content += `<div>${marker}${seriesName.split("(")[0]}${value}</div>`;});// 构建tooltip的内容return content;},},

整个折线图组件

<template><div class="w100 h100" ref="chart"></div>
</template><script>
import resize from "./mixins/resize";
let color = ["rgba(28, 214, 170,1)", "#FFF200", "#FF6200"];
let color1 = ["rgba(28, 214, 170,.1)","rgba(255, 255, 0,.1)","rgba(255, 98, 0,.1)",
];
export default {mixins: [resize],props: ["list", "type"],watch: {list: {// 深度监听没有旧值handler(val) {console.log(val, "tab3双折现");this.initChart();this.xAxisData =this.type == 1 ? val.monthOrDayOrTimeList : val.monthOrDayOrTimeList;this.VALUE1 =this.type == 1 ? val.policeTotalCountList : val.policeTotalCountList;this.VALUE2 = this.type == 1 ? val.minorFireList : val.minorFireList;this.VALUE3 =this.type == 1 ? val.notMinorFireList : val.notMinorFireList;// this.xAxisData = val.map((item) => item.date);// this.VALUE1 = val.map((item) => 50 - item.sugarAfterMeal);// this.VALUE2 = val.map((item) => item.sugarBeforeMeal);// this.VALUE3 = val.map((item) => item.sugarAfterMeal);// 计算每条线的总和const sum1 = this.VALUE1.reduce((acc, val) => acc + val, 0);const sum2 = this.VALUE2.reduce((acc, val) => acc + val, 0);const sum3 = this.VALUE3.reduce((acc, val) => acc + val, 0);let option = {xAxis: [{data: this.xAxisData,},],series: [{name: `火灾总量(${sum1})`,data: this.VALUE1,},{name: `轻微火灾(${sum2})`,data: this.VALUE2,},{name: `非轻微火灾(${sum3})`,data: this.VALUE3,},],};this.chart.setOption(option);if (this.timeId) {clearInterval(this.timeId);this.timeId = null;}if (this.xAxisData.length > this.maxNum) {let num = 0;this.timeId = setInterval(() => {if (num + this.maxNum == this.xAxisData.length) {num = 0;} else {num += 1;}let option = {dataZoom: [{startValue: num, // 从头开始。endValue: num + this.maxNum - 1, // 一次性展示几个},],};this.chart.setOption(option);}, 3000);}},// 这里是关键,代表递归监听的变化deep: true,},},data() {return {chart: null,xAxisData: [],VALUE3: [],maxNum: 12, // 一次性展示几个。timeId: null,};},mounted() {this.$nextTick(() => {this.initChart();});},beforeDestroy() {if (!this.chart) {return;}this.chart = null;clearInterval(this.timeId);this.timeId = null;},methods: {init() {},// 体温initChart() {this.chart = this.$echarts.init(this.$refs.chart);this.chart.setOption({// color: color,tooltip: {show: "true",trigger: "axis",textStyle: {fontSize: this.fontSize(0.15),},// ☆☆☆☆☆☆自定义tooltip,去掉图例后面添加的总数值统计formatter: function (params) {console.log("params", params);let content = "";params.forEach((param) => {const value = param.value;const seriesName = param.seriesName;const marker = param.marker;content += `<div>${marker}${seriesName.split("(")[0]}${value}</div>`;});// 构建tooltip的内容return content;},},grid: {top: "20%",left: "6%",right: "1%",bottom: "4%",containLabel: true,},legend: {itemHeight: this.fontSize(0.13), //图例图标的高度itemWidth: this.fontSize(0.2), //图例图标的宽度itemGap: this.fontSize(0.23), //图例图标与文字间的间距textStyle: {color: "#fff",borderColor: "#fff",fontSize: this.fontSize(0.14),},top: 7,right: 20,},// 横坐标设置xAxis: [{type: "category",boundaryGap: true,//坐标轴axisLine: {lineStyle: {color: "#2384B1", //横轴颜色width: this.fontSize(0.01), //横轴粗细},},axisLabel: {interval: 0, // 显示所有标签rotate: 30, // 倾斜标签以节省空间textStyle: {color: "#fff", // 横坐标颜色fontSize: this.fontSize(0.13),},},axisTick: {show: true, //不显示坐标轴刻度alignWithLabel: true, // 刻度线与标签对齐},// data: this.xAxisData,},],// Y轴设置yAxis: [{type: "value",min: 0,// max:  150,minInterval: 0.5,// 网格线splitLine: {show: true,lineStyle: {color: "#023052",type: "dashed",},},axisLine: {show: false,},//坐标值标注axisLabel: {// formatter: "{value}", //右侧Y轴文字显示textStyle: {color: "#fff",fontSize: this.fontSize(0.13),},},},],//滑动条dataZoom: [{xAxisIndex: 0, //这里是从X轴的0刻度开始show: false, //是否显示滑动条,不影响使用type: "inside", // 这个 dataZoom 组件是 slider 型 dataZoom 组件startValue: 0, // 从头开始。endValue: this.maxNum - 1, // 一次性展示几个},{xAxisIndex: 0, //这里是从X轴的0刻度开始show: false, //是否显示滑动条,不影响使用type: "inside", // 这个 dataZoom 组件是 slider 型 dataZoom 组件startValue: 0, // 从头开始。endValue: this.maxNum - 1, // 一次性展示几个},],series: [{name: " ",type: "line",smooth: true, //是否平滑曲线显示symbol: "none", // circle | rect | roundRect | triangle | diamond | pin | arrowlineStyle: {normal: {width: this.fontSize(0.01),color: color[0], // 线条颜色},},itemStyle: {normal: {color: color[0],},},areaStyle: {//区域填充样式normal: {//线性渐变,前4个参数分别是x0,y0,x2,y2(范围0~1);相当于图形包围盒中的百分比。如果最后一个参数是‘true’,则该四个值是绝对像素位置。color: new this.$echarts.graphic.LinearGradient(0,0,0,1,[{offset: 0,color: color[0],},{offset: 1,color: color1[0],},],false),// shadowColor: color[0], //阴影颜色shadowBlur: 20, //shadowBlur设图形阴影的模糊大小。配合shadowColor,shadowOffsetX/Y, 设置图形的阴影效果。},},label: {normal: {show: false,position: "top", //在上方显示textStyle: {//数值样式color: color[0],Size: this.fontSize(0.15),fontWeight: 700,},},},// data: this.goodRate, //折线图数据},{name: " ",type: "line",smooth: true, //是否平滑曲线显示symbol: "none", // circle | rect | roundRect | triangle | diamond | pin | arrowlineStyle: {normal: {width: this.fontSize(0.01),color: color[1], // 线条颜色},},itemStyle: {normal: {color: color[1],},},areaStyle: {//区域填充样式normal: {//线性渐变,前4个参数分别是x0,y0,x2,y2(范围0~1);相当于图形包围盒中的百分比。如果最后一个参数是‘true’,则该四个值是绝对像素位置。color: new this.$echarts.graphic.LinearGradient(0,0,0,1,[{offset: 0,color: color[1],},{offset: 1,color: color1[1],},],false),// shadowColor: color[1], //阴影颜色shadowBlur: 20, //shadowBlur设图形阴影的模糊大小。配合shadowColor,shadowOffsetX/Y, 设置图形的阴影效果。},},label: {normal: {show: false,position: "top", //在上方显示textStyle: {//数值样式color: color[1],Size: this.fontSize(0.13),fontWeight: 700,},},},// data: this.goodRate, //折线图数据},{name: " ",type: "line",smooth: true, //是否平滑曲线显示symbol: "none", // circle | rect | roundRect | triangle | diamond | pin | arrowlineStyle: {normal: {width: this.fontSize(0.01),color: color[2], // 线条颜色},},itemStyle: {normal: {color: color[2],},},areaStyle: {//区域填充样式normal: {//线性渐变,前4个参数分别是x0,y0,x2,y2(范围0~1);相当于图形包围盒中的百分比。如果最后一个参数是‘true’,则该四个值是绝对像素位置。color: new this.$echarts.graphic.LinearGradient(0,0,0,1,[{offset: 0,color: color[2],},{offset: 1,color: color1[2],},],false),// shadowColor: color[2], //阴影颜色shadowBlur: 20, //shadowBlur设图形阴影的模糊大小。配合shadowColor,shadowOffsetX/Y, 设置图形的阴影效果。},},label: {normal: {show: false,position: "top", //在上方显示textStyle: {//数值样式color: color[2],Size: this.fontSize(0.13),fontWeight: 700,},},},// data: this.goodRate, //折线图数据},],});},},
};
</script>
<style lang="scss" scoped>
@import "./css/rem.scss";.item {width: 33%;
}
</style>

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

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

相关文章

应急响应:Linux 入侵排查思路.

什么是应急响应. 一个组织为了 应对 各种网络安全 意外事件 的发生 所做的准备 以及在 事件发生后 所采取的措施 。说白了就是别人攻击你了&#xff0c;你怎么把这个攻击还原&#xff0c;看看别人是怎么攻击的&#xff0c;然后你如何去处理&#xff0c;这就是应急响应。 目录&…

Python OpenCV 影像处理:边缘检测

►前言 上篇介绍使用OpenCV Python findContours() 函数用于在二值化影像中寻找连通的白色区域&#xff0c;并返回一系列点的集合来表示找到的轮廓。本篇将介绍基于计算影像的梯度&#xff0c;通过在影像中找到梯度值的变化来识别边缘&#xff0c;边缘检测通常用于预处理步骤&…

【区块链+食品安全】湖南省食品行业联合会:溯链中国—基于区块链的食品安全可信追溯平台 | FISCO BCOS应用案例

食品安全追溯体系的建设&#xff0c;能够切实加强食品安全监管&#xff0c;确保人民群众饮食安全和身体健康&#xff0c;是创建食品安全城市必不可少的一部分。然而&#xff0c;中心化存储、信息孤岛、窜货是传统溯源行业最大痛点。区块链技术的快速发展&#xff0c; 使得防伪溯…

文案二创app下载,为你轻松生成原创文案

在当今数字化的时代&#xff0c;各种应用软件如雨后春笋般涌现&#xff0c;为我们的生活和工作带来了极大的便利。而其中&#xff0c;有一款特别的短剧文案二创app&#xff0c;它以其独特的功能和优势&#xff0c;为文案创作者们打开了一扇全新的大门&#xff0c;让生成原创文案…

电子电气架构 --- 智能驾驶域控制器供应商简介

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 屏蔽力是信息过载时代一个人的特殊竞争力&#xff0c;任何消耗你的人和事&#xff0c;多看一眼都是你的不…

Redis7.0.15 主从复制、哨兵模式搭建

主从复制&#xff1a;master以写为主&#xff0c;slave以读为主&#xff0c;当master数据变化的时候&#xff0c;自动将新的数据异步同步到其他的slave数据库 1. Redis复制介绍&#xff1a; https://redis.io/docs/latest/operate/oss_and_stack/management/replication/ 读写…

【秋招笔试】8.11大疆秋招(第二套)-测开岗

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收…

Python基于TensorFlow实现卷积神经网络-双向长短时记忆循环神经网络分类模型(CNN-BiLSTM分类算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 随着人工智能技术的快速发展&#xff0c;深度学习已经成为处理复杂数据集的关键工具之一。其中&#x…

【48 Pandas+Pyecharts | 2024年巴黎奥运会奖牌数据分析可视化】

PandasPyecharts | 2024年巴黎奥运会奖牌数据分析可视化 文章目录 &#x1f3f3;️‍&#x1f308; 1. 导入模块&#x1f3f3;️‍&#x1f308; 2. Pandas数据处理2.1 读取数据2.2 处理奖牌数据2.3 统计各参数国家/地区奖牌数据 &#x1f3f3;️‍&#x1f308; 3. Pyecharts数…

MQ的介绍

一、MQ简介 MQ全称Message Queue(消息队列)&#xff0c;是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信&#xff0c;主要功能业务解耦 二、常见的MQ产品 RabbitMQ、RocketMQ、Kafka、ActiveMQ 三、为什么要用MQ&#xff1f; 3.1、异步处理 应用场景…

苍穹外卖-知识点

搭建环境 前端 使用nginx&#xff08;文件路径带中文 会启动不成功&#xff09; 后端

嵌入式软件开发学习一:软件安装(保姆级教程)

资源下载&#xff1a; 江协科技提供&#xff1a; 资料下载 一、安装Keil5 MDK 1、双击.EXE文件&#xff0c;开始安装 2、 3、 4、此处尽量不要安装在C盘&#xff0c;安装路径选择纯英文&#xff0c;防止后续开发报错 5、 6、 7、弹出来的窗口全部关闭&#xff0c;进入下一步&a…

C++简单界面设计

#include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {---------------------窗口设置----------------------this->setWindowTitle("南城贤子摄影工作室");//设置窗口标题this->setWindowIcon(QIcon("d:\\Pictures\\C…

ES JavaApi

1.RestClient操作索引库 2.RestClient操作文档 2.1查询 2.2更新 2.3删除 2.4批量新增&#xff08;bulk&#xff09; 3.DSL查询 对应的api 3.0解析响应 3.1全文检索 3.2精确查询 3.3复合查询-boolQuery 构建boolQuery 3.4排序和分页 3.5高亮

thinkphp漏洞之sql注入漏洞-builder处漏洞

目录 适用版本 环境搭建 文件下载安装 配置文件修改 漏洞分析 适用版本 注&#xff1a;thinkphp版本&#xff1a;5.0.13<ThinkPHP<5.0.15 、 5.1.0<ThinkPHP<5.1.5 环境搭建 文件下载安装 在github上面下载相应版本&#xff0c;下载think文件&#xff0c;…

暑期破防实录——捡漏腾讯

序 经历了整整三个月的折磨&#xff0c;暑期实习终于尘埃落定。 其实还没收到 offer 的时候&#xff0c;还会想着到时候录用了该怎么大写特写小作文&#xff0c;但真到了这一天&#xff0c;只剩下一种解脱感&#xff0c;一种摆脱了漫长的焦虑与压抑的淡淡喜悦。 或许就像久病…

Lab 1 实验 MapReduce

&#x1f442; 若月亮没来 (若是月亮还没来)&#xff08;若是月亮还没来&#xff09; - 王宇宙Leto/乔浚丞 - 单曲 - 网易云音乐 目录 &#x1f33c;参考代码 &#x1f419;解析 &#x1f41f;mrsequential.go &#x1f41f;mrapps/wc.go &#x1f4d5;实验--准备 &…

维基知识库系统Wiki.js本地Linux环境部署并配置公网地址远程访问

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Web3与医疗健康:去中心化技术在医疗行业的应用前景

随着区块链技术和去中心化理念的兴起&#xff0c;Web3作为新一代互联网技术正逐渐影响各个行业。在医疗健康领域&#xff0c;Web3技术的应用前景引起了广泛关注。本文将探讨Web3如何通过去中心化技术提升医疗健康行业的效率、透明度和安全性&#xff0c;并分析其在实际应用中的…

无线领夹麦克风哪个品牌音质最好?领夹麦克风十大品牌推荐

在当下自媒体盛行的时代&#xff0c;无线领夹麦克风无疑是每位创作者追求高质量音频的必备工具。它不仅解放了双手&#xff0c;让拍摄更加自由灵活&#xff0c;更以其出色的音质表现&#xff0c;成为直播、Vlog制作中的关键角色。面对市场上琳琅满目的品牌与型号&#xff0c;许…