使用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…

辗转相除法

其实是求a、b&#xff08;a>b&#xff09;最大公约数。 &#xff08;leetcode 1979. 找出数组的最大公约数&#xff09; 方法一&#xff1a;遍历&#xff0c;遍历的思想就是从2开始到b(或者b/2)结束&#xff0c;如果其中某个数都能被两者整除&#xff0c;那该数就是最大公约…

抖音小店怎么运营?新手应该如何做?一篇详解!

我是电商珠珠 我做抖音小店也已经快三年了&#xff0c;期间呢也不断在网上做分享。 有很多小伙伴问我最多的问题就是&#xff0c;抖音小店这么赚钱&#xff0c;那新手小白的话怎么做&#xff0c;做不起来怎么办。 我将做店总共分为了五步&#xff0c;懂事的小伙伴已经开始记…

【工具】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…

一些关于开关电源经典回答

1、开关电源变压器如果用铜带取代漆包线&#xff0c;其允许通过的电流怎么算?比如说厚度为0.1mm的铜带&#xff0c;允许通过的电流怎么算? 专家&#xff1a;如果开关电源变压器用铜带取代漆包线&#xff0c;铜带(漆包线)的涡流损耗可以大大将小&#xff0c;工作频率可以相应…

【开题报告】基于SpringBoot的天文学知识交流平台的设计与实现

1.选题背景 天文学是一门古老而又充满神秘感的学科&#xff0c;吸引着众多人的关注和热爱。随着科技的发展&#xff0c;我们对宇宙的认知愈加深入&#xff0c;人们对天文学的热情也愈加高涨。然而&#xff0c;目前市场上缺乏一个专门的平台&#xff0c;供天文学爱好者交流、分…

React的父子组件互相通信

在写项目的时候遇到了父子组件互相调用对方的方法&#xff0c;然后知道用什么逻辑写&#xff0c;但是就是没写对过&#xff0c;开始用的props和ref,但是报错就去用的context,context在引用的时候还是报错&#xff0c;所以最后还是用的props和ref,下边是实现的案例。 父组件 Fat…

11 动态规划解最后一块石头的重量II

来源&#xff1a;LeetCode第1049题 难度&#xff1a;中等 描述&#xff1a;有一堆石头&#xff0c;用证书数组stones表示&#xff0c;其中stones[i]表示第i块石头的重量&#xff0c;每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将他们放在一起粉碎&#xff0c;…

【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; …

UI/UX:学习资料

网站 国内网站 UI中国 国外网站 Dribbble 书籍 交互设计之路 有更好的资料欢迎补充。随时收录&#xff0c;一起学习

算法通关村-----数论问题解析

最大公约数和最小公倍数 概念描述 最大公约数&#xff08;GCD&#xff09;是指两个或多个整数共有约数中的最大值。 最小公倍数&#xff08;LCM&#xff09;是指两个或多个整数共有的倍数中的最小值 方法介绍 碾转相除法 一种用于计算两个整数的最大公约数&#xff08;GCD…

只需十分钟快速入门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;我们首…