使用Echarts.js绘制多条折线图

一、页面效果

默认tab为不限,渲染多条折线:

在这里插入图片描述

切换tab,只渲染对应tab的一条折线:

在这里插入图片描述

二、功能描述

​ 1、tab选中不限时,图表中同时渲染多条折线,对应多种类型的数据。

​ 2、切换tab时,如果选中指定tab,则图表中只渲染当前tab对应的折线,且指定不同tab对应不同的折线颜色。

​ 3、折线图hover时,会以提示框的形式展示X轴信息以及对应所有折线的信息。

​ 4、Y轴坐标会根据数据列表自动计算坐标轴的最小值和最大值。

​ 5、X轴坐标会根据数据列表决定坐标轴信息。

​ 6、指定图表标题和标题位置。

*注意:

​ 1、当前案例是在Vue2中使用,echarts.js版本为5.3.2

三、具体代码

html结构:
<!-- 准备渲染echarts的画布 -->  
<div id="main"></div><script>
// 引入echarts依赖
import * as echarts from "echarts";
// 声明折线对应颜色
const channelColors =  {PC: "#6384f7",H5: "#64f28c",APP: "#ff92ae",
}, 
</script><style>
#main {height: 300px; /* 必须指定画布的高度 否则无法渲染 */
}
</style>
js渲染逻辑:
// 渲染图表信息
showData(dataList) {// 判断是否已经存在实例 避免重复注册let myChart = echarts.getInstanceByDom(document.getElementById("main"));if (!myChart) {myChart = echarts.init(document.getElementById("main"));}let option = {// 设置图表标题信息title: {text: "趋势图", // 图表文字left: "5%", // 图表标题位置},tooltip: {trigger: "axis", // 触发类型},// 根据数据列表设置x轴坐标信息xAxis: {data: dataList[0].list.map((item) => item.time),},// 设置y轴坐标类型为数据轴 适用于连续数据 会根据数据自动计算坐标轴的最小值和最大值yAxis: { type: "value" },series: dataList.map((item) => {// 遍历数据列表,返回数据对象数组,渲染多条折线// 数组中每个对象对应一条折线return {data: item.list.map((item2) => item2.value), // 具体数据type: "line", // 设置图表类型为折线图name: item.name, // 图表名称// smooth: true, // 是否将折线设置为平滑曲线// 设置折线样式itemStyle: {color: channelColors[item.name], // 设置折线颜色},};}),};// 第二个参数默认为 false 即表示合并新旧option 可能会出现某类数据被删除 但对应数据折线依旧存在的问题// 设置为 true,表示内部所有组件都会被删除,然后根据新 option 创建所有新组件。option && myChart.setOption(option, true);
}
js调用逻辑:
// 省略前置逻辑
// 从后端接口获取要渲染的各类数据列表 time-对应x周坐标 value-对应数据量
// 如果要渲染多条折线 则dataList中包含多个对象 下面表示渲染三条折线
dataList = [{name: "PC",list: [{"time": "2023-10-22","value": 1},{"time": "2023-10-23","value": 2}{"time": "2023-10-24","value": 3}// 其他数据。。。],},{name: "H5",list: [{"time": "2023-10-22","value": 2},{"time": "2023-10-23","value": 3}{"time": "2023-10-24","value": 4}// 其他数据。。。],},{name: "APP",list: [{"time": "2023-10-22","value": 3},{"time": "2023-10-23","value": 4}{"time": "2023-10-24","value": 5}// 其他数据。。。],},
];
// 调用渲染函数
this.showData(dataList);

四、相关资料

Echarts.js 配置文档

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

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

相关文章

Taro3+Vue3重构Mpvue小程序项目踩坑记

1、Taro小程序编译时报错&#xff1b; 原因:页面中存在小程序识别不了的标签&#xff1b;如div解决方法&#xff1a; 将div标签替换成小程序可识别的标签&#xff1b; 安装Taro中提供的插件:tarojs/plugin-html, 使其可被识别&#xff1b; 插件安装教程参考Taro官网&#xff1…

【工具】Zotero|使用Zotero向Word中插入引用文献(2023年)

版本&#xff1a;Word 2021&#xff0c;Zotero 6.0.30 前言&#xff1a;两年前我找网上插入文献的方式&#xff0c;网上的博客提示让我去官网下个插件然后才能装&#xff0c;非常麻烦&#xff0c;导致我对Zotero都产生了阴影。最近误打误撞发现Zotero自带了Word插件&#xff0c…

KMP算法【数据结构】

KMP算法 KMP算法是一种改进的字符串匹配算法 Next[j] k :一个用来存放子串返回位置的数组&#xff0c;回溯的位置用字母k来表示。其实就是从匹配失败位置&#xff0c;找到他前面的字符串的最大前后相等子串长度。默认第一个k值为-1(Next[0] -1),第二个k值为0(Next[1] 0),我…

SpringBoot使用动态Banner

SpringBoot使用动态Banner Spring Boot 2.0 提供了很多新特性&#xff0c;其中就有动态 Banner。 1、pom依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://w…

【Java Spring】SpringBoot 配置文件

1、Spring Boot配置文件的作用 配置文件的基本作用&#xff1a; 数据库连接信息&#xff08;包括用户名和密码的设置&#xff09;项目的启动端口第三方系统的调用密钥等信息用于发现和定位问题的普通日志和异常日志等 2、Spring Boot配置文件的格式 Spring Boot配置文件主要…

想成为网络安全工程师该如何学习?

一、网络安全应该怎么学&#xff1f; 1.计算机基础需要过关 这一步跟网安关系暂时不大&#xff0c;是进入it行业每个人都必须掌握的基础能力。 计算机网络计算机操作系统算法与数据架构数据库 Tips:不用非要钻研至非常精通&#xff0c;可以与学习其他课程同步进行。 2.渗透技…

探索短剧市场的商机:打造短视频平台的全方位指南

目前短剧市场蓬勃发展&#xff0c;上半年备案数远超电视剧&#xff0c;彰显了短剧小程序市场潜力巨大&#xff0c;商业价值巨大。用户对短小精悍娱乐内容的需求不断增加&#xff0c;而新兴市场中有限的短剧小程序正好能够迎合这一需求。 搭建短视频平台的关键步骤&#xff1a; …

只需十分钟快速入门Python,快速了解基础内容学习。零基础小白入门适用。

文章目录 简介特点搭建开发环境版本hello world注释文件类型变量常量数据类型运算符和表达式控制语句数组相关函数相关字符串相关文件处理对象和类连接mysql关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源…

python基础练习题库实验4

文章目录 题目1代码实验结果 题目2代码实验结果 题目3代码实验结果 题目4代码实验结果 题目5代码实验结果 题目6代码实验结果 题目总结 题目1 编写一个程序&#xff0c;使用for循环语句和字符串格式显示以下精确输出。 例如&#xff1a; 代码 for i in range(1, 11):result…

SSM框架(三):SpringMVC

文章目录 一、SpringMVC简介1.1 概述1.2 入门案例1.3 bean的加载控制1.4 PostMan插件 二、请求【页面向后台发送数据】2.1 请求映射路径2.2 请求方式2.3 解决中文乱码2.4 请求参数2.4.1 五种常见参数种类2.4.2 JSON数据2.4.3 RequestParam与RequestBody的区别2.4.4 日期类型 三…

Python生产、消费Kafka

如果想通过docker安装kafka&#xff0c;可参考 Docker安装Kafka 生产者 import json import time import tracebackfrom datetime import datetime from kafka import KafkaProducer from kafka.errors import kafka_errorsproducer KafkaProducer(bootstrap_servers[localho…

Javaweb之Vue组件库Element之Form表单的详细解析

4.3.4 Form表单 4.3.4.1 组件演示 Form 表单&#xff1a;由输入框、选择器、单选框、多选框等控件组成&#xff0c;用以收集、校验、提交数据。 表单在我们前端的开发中使用的还是比较多的&#xff0c;接下来我们学习这个组件&#xff0c;与之前的流程一样&#xff0c;我们首…

C/C++【数据结构】一文秒懂二叉树

个人主页&#xff1a;仍有未知等待探索_C语言疑难,数据结构,小项目-CSDN博客 专题分栏&#xff1a;数据结构_仍有未知等待探索的博客-CSDN博客 一、前言 树形结构是一类非常重要的非线性结构。树形结构是节点之间有分支&#xff0c;并且具有层次关系的结构&#xff0c;它类似于…

【hacker送书第3期】OpenCV轻松入门:面向Python(第2版)

第3期图书推荐 内容简介作者简介图书目录专家推荐参与方式 内容简介 本书基于面向 Python 的 OpenCV(OpenCV for Python)&#xff0c;介绍了图像处理的方方面面。本书以 OpenCV 官方文档的知识脉络为主线&#xff0c;并对细节进行补充和说明。书中不仅介绍了 OpenCV 函数的使用…

Maven启动报错 - No goals have been specified for this build.You must specify a valid lifecycle phase

在对Maven项目进行Build / 初始化时 可能会出现下图这种情况&#xff1a; ​ [ERROR] No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:&l…

出纳常用的月报表,熬夜做了这8份直接用!

做出纳&#xff0c;公司财务的日报表是必不可少的&#xff0c;收支了多少&#xff0c;支出了多少&#xff0c;这些都是要记录下来的&#xff01; 一份出纳日报表通常包含以下内容&#xff1a; 1. 日期&#xff1a;报告涵盖的具体日期&#xff0c;标明是哪一天的财务数据。 2. 收…

如何使用企业微信 WorkTool API 开源框架快速开发企微聊天机器人(详细教程)

WorkTool 基本框架概述 WorkTool 是一个依附于企业微信来运行的无人值守群管理机器人程序&#xff0c;WorkTool 开源&#xff0c;并且永久免费。您可以使用本应用程序来自动执行一个自己企业微信里的账号&#xff08;当做机器人账号&#xff09;可通过后台调用对应的 API 来驱…

U-boot(六):命令体系,环境变量,iNand/SD卡驱动

本文主要探讨210的uboot命令体系&#xff0c;黄金变量,iNand/SD卡驱动相关知识。 命令体系 uboot命令体系 位置:uboot/common/ 参数:uboot命令支持传递参数(argc,argv) 函数:xxx命令的实现算数为do_xxx /** Use puts() inst…

基于mvc电影院售票预订选座系统php+vue+elementui

本影院售票系统主要包括二大功能模块&#xff0c;管理员功能模块和用户功能模块。 &#xff08;1&#xff09;管理员模块&#xff1a;系统中的核心用户管理员登录后&#xff0c;通过管理员功能来管理后台系统。主要功能有&#xff1a;首页、个人中心、电影类型管理、场次时间管…

数据结构 / day04 作业

1. 单链表任意位置删除, 单链表任意位置修改, 单链表任意位置查找, 单链表任意元素查找, 单链表任意元素修改, 单链表任意元素删除, 单链表逆置 // main.c#include "head.h"int main(int argc, const char *argv[]) {Linklist headNULL; //head 是头指针// printf(&q…