【Echarts】折线图和柱状图如何从后端动态获取数据?

news2024/11/18 17:29:28

🚀个人主页:一颗小谷粒

🚀所属专栏:Web前端开发

很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~

目录

1.1 前端数据分析

1.2 数据库表分析

1.3 后端数据处理 

1.4 前端接收数据


继上一篇文章,本篇将主要分享Echarts中折线图和柱状图该如何从后端动态获取数据? 

如果你是新手或刚开始学习Echarts,建议先阅读上篇文章: 

对于 Vue CLI 项目如何引入Echarts以及动态获取数据-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/2301_79263365/article/details/142584119?spm=1001.2014.3001.5501

技术栈:Spring + Springboot + Mybatis + Vue3

  工具:IDEA + MySql + HbuilderX

1.1 前端数据分析

根据Echarts官方文档提供的案例,分析出柱状图和折线图需要两组数据,也就是X轴数据和Y轴数据。所以我们需要从后端返回两组数据,且两组数据之间存在对应关系,这就要求我们的sql语句必须准确无误!

1.2 数据库表分析

和上一篇饼状图一样,本次依旧使用服装-销售表为例演示:

我们X轴表示服装类型:

select type from sales group by type

查询结果: 

 

Y轴表示每种类型的服装的销售总数:

select sum(number)c from sales  group by type

查询结果: 

这里一定要注意数据之间的对应关系,也就是我这里的9对应的是T恤,7对应的是鞋子,10对应的是裤子。由于我是根据类型分组所查询的数量和,所以这里是对应的,大家在查询时切记不要出错。

1.3 后端数据处理 

dao层代码:

    @Select("select type from sales group by type")
    List<String> typeName();
    @Select("select sum(number) c from sales  group by type")
    List<Object> typeNumberSum();

service层代码:

     @Autowired
     SalesDao salesDao;

     public Map<String, Object> salesLine() {
        Map<String,Object> map = new HashMap<>();
        List<String> typeName = salesDao.typeName();
        List<Object> typeNumberSum = salesDao.typeNumberSum();
        map.put("typeName",typeName);
        map.put("typeNumberSum",typeNumberSum);
        return map;
    }

由于需要两组数据,所以采用map存储,服装类型type作为键,各类型销售数量总和sum(number)作为键,最后返回map到web层。 

web层代码:

    @Autowired
    EchartsService echartsService;

    @RequestMapping("/line")
    public Result newCountLine(){
        Map<String, Object> map = echartsService.salesLine();
        return  new Result(200, "成功", map);
    }

由于柱状图和折线图是一样的,所以我这里以柱状图为例演示,且在前端代码中我写有转换按钮

1.4 前端接收数据

前端同样在data属性后接收后端响应回来的数据,这里我们分别对应拿到map中的键即可。X轴上所要显示的数据就是后端封装在 键typeName 中的值,Y轴所要显示的数据就是后端封装在 键typeNumberSum 中的值如图所示:

前端完整代码: 

<template>
	<div id="body">
		<!-- 为 ECharts 准备一个定义了宽高的 DOM -->
		<div id="main" style="width: 600px;height:400px;"></div>
	</div>
</template>

<script>
	import "echarts/theme/purple-passion.js"

	export default {
		data() {
			return {

			}
		},
		methods: {
			initChart() {
				this.$http.get("api/echartsCtl/line").then((resp) => {
					// 基于准备好的dom,初始化echarts实例
					var myChart = this.echarts.init(document.getElementById('main'), "purple-passion");

					var option = {
						title: {
							text: '销量统计',
							subtext: '纯属虚构'
						},
						tooltip: {
							trigger: 'axis'
						},
						legend: {
							data: ['最高销量', '最低销量']
						},
						toolbox: {
							show: true,
							feature: {
								mark: {
									show: true
								},
								dataView: {
									show: true,
									readOnly: false
								},
								magicType: {
									show: true,
									type: ['line', 'bar']
								},
								restore: {
									show: true
								},
								saveAsImage: {
									show: true
								}
							}
						},
						calculable: true,
						xAxis: {
							data: resp.data.result.typeName
						},
						yAxis: {},
						series: [{
							name: '销量',
							type: 'bar',
							data: resp.data.result.typeNumberSum
						}]
					};
					// 使用刚指定的配置项和数据显示图表。
					myChart.setOption(option);
				})
			}
		},
		mounted() {
			this.initChart();
		}
	}
</script>

<style>
</style>

效果展示:

彩蛋:

除了Echarts外,这里给大家推荐另一个数据可视化工具,如果你对前端感兴趣的话可以学习!

Vue Data UIA user-empowering data visualization Vue3 components library for eloquent data storytellingicon-default.png?t=O83Ahttps://vue-data-ui.graphieros.com/弃用 Echarts! 这一次我选择 - Vue Data Ul !



本次的分享就到此为止了,希望我的分享能给您带来帮助,创作不易也欢迎大家三连支持,你们的点赞就是博主更新最大的动力!如有不同意见,欢迎评论区积极讨论交流,让我们一起学习进步!有相关问题也可以私信博主,评论区和私信都会认真查看的,我们下次再见

 博主wx:g2279605572 

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

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

相关文章

开源图像降噪算法与项目介绍【持续更新】

Intel Open Image Denoise 介绍&#xff1a;Intel Open Image Denoise&#xff08;OIDN&#xff09;是一个开源库&#xff0c;它提供了一系列高性能、高质量的去噪滤镜&#xff0c;专门用于光线追踪渲染的图像。这个库是Intel Rendering Toolkit的一部分&#xff0c;并且是在宽…

基因功能分析:DAP-seq与H3K4me3 ChIP-seq的协同效应

什么是DAP-Seq&#xff1f; DAP-Seq&#xff0c;即DNA亲和纯化测序技术&#xff0c;是一种创新的基因组分析方法。它通过体外表达转录因子&#xff0c;精确地鉴定转录因子与基因组的结合位点。与传统的ChIP-seq相比&#xff0c;DAP-Seq不受抗体和物种的限制&#xff0c;使得研…

springboot+vue+java校园共享厨房菜谱系统

目录 功能介绍使用说明系统实现截图开发核心技术介绍&#xff1a;开发步骤编译运行核心代码部分展示开发环境需求分析详细视频演示源码获取 功能介绍 用户 首页&#xff1a;展示系统基本信息&#xff0c;包括厨房介绍、使用指南、最新公告等。 登录注册&#xff1a;用户注册账…

【Qt笔记】QFrame控件详解

目录 引言 一、QFrame的基本特性 二、QFrame的常用方法 2.1 边框形状&#xff08;Frame Shape&#xff09; 2.2 阴影样式&#xff08;Frame Shadow&#xff09; 2.3 线条宽度&#xff08;Line Width&#xff09; 2.4 样式表(styleSheet) 三、QFrame的应用场景 四、应用…

906. 超级回文数

1. 题目 906. 超级回文数 2. 解题思路 题目意思很简单&#xff0c;在给定范围中找到所有满足&#xff0c;它本身是回文&#xff0c;且它的平方也是回文的数字个数。 这题需要注意题目给定的范围&#xff0c;后面很有用&#xff1a; 因为回文范围是有限的&#xff0c;那么我…

C++(9.26)

1.什么是虚函数&#xff0c;什么是纯虚函数 虚函数是在基类中声明为virtual的函数&#xff0c;可以被重新定义来实现多态&#xff0c;纯虚函数则是以0结尾的虚函数&#xff0c;是没有实现的虚函数。 2.基类为什么需要虚构析函数 为了防止在后面delete释放空间时导致溢出 数据…

【IPV6从入门到起飞】5-6 IPV6+Home Assistant(ESPHome+ESP-cam)实时监控

5-6 IPV6Home Assistant[ESPHomeESP-cam]实时监控 1、背景2、ESPHome 安装2-1 ESPHome 简述2-2 安装 3、创建ESP32-CAM设备4、编辑yaml配置4-1 找到合适的配置4-2 修改配置4-3 验证配置4-4 编译项目 5、烧录固件6、绑定设备7、效果实现 1、背景 在前面我们已经实现了数据采集与…

【Python游戏开发】扫雷游戏demo

准备步骤 项目开发使用【Mu 编辑器】 1.使用Mu编辑器创建新项目 2.点击【保存】&#xff0c;将项目保存到指定路径中 3.点击【图片】&#xff0c;会打开项目图片存储位置&#xff0c;将所需图片复制粘贴至该文件夹中 游戏编写 1.设置游戏场景 ROWS 15 # 设置行数 COLS …

【面试题】软件测试实习(含答案)

软件测试实习常见面试题&#xff0c;主要是功能测试相关的基础问题 目录 一、软件测试基础 1、介绍一下你最近的项目&#xff0c;以及工作职责 2、软件项目的测试流程? 3、黑盒测试与白盒测试的区别? 4、黑盒测试常见的设计方法?怎么理解等价类方法和边界值方法 1&…

GO语言环境搭建和字符说明

Go的三种安装方式 Go有多种安装方式&#xff0c;你可以选择自己喜欢的。这里我们介绍三种最常见的安装方式&#xff1a; 1.Go源码安装&#xff1a;这是一种标准的软件安装方式。对于经常使用Unix类系统的用户&#xff0c;尤其对于开发者来说&#xff0c;从源码安装是最方便而…

传奇架设教程:传奇登录器公告窗口如何设置?link.htm网页文件制作教程

今天给大家分享传奇登录器公告窗口的设置教程&#xff1a; 我们玩服时可以看到很多服的登录器公告看上去都很高大上&#xff0c;并且窗口比例也非常的合适&#xff0c;但是自己架设起来并没有看到窗口公告&#xff0c;这是为什么呢&#xff1f; 这是因为你的列表没有设置公告…

计算机视觉中的2D变换:用Python让图像‘动’起来

嘿&#xff0c;小伙伴们&#xff01;今天我们要聊的是计算机视觉中的2D变换——那些能让图像‘动’起来的技术。无论你是初学者还是资深开发者&#xff0c;这篇文章都将带你深入了解2D变换&#xff0c;并通过Python代码实战演示。准备好了吗&#xff1f;让我们开始吧&#xff0…

Humans or LLMs as the Judge? A Study on Judgement Bias

文章目录 题目摘要引言相关作品论法官的偏见实验方案结果与讨论欺骗LLM法官结论 题目 人类还是LLMs作为裁判&#xff1f;判断偏差研究 论文地址&#xff1a;https://arxiv.org/pdf/2402.10669 摘要 采用人类和大型语言模型(LLM)作为评估LLM性能的评判者(也称为人类和LLM-as-a…

多车合作自动驾驶框架CoDrivingLLM:基于大语言模型驱动的决策框架

Abstract 目前&#xff0c;全球范围内已开始对联网自动驾驶汽车&#xff08;CAVs&#xff09;进行道路测试&#xff0c;但它们在复杂场景中的安全性和效率表现仍不令人满意。合作驾驶利用CAVs的连接能力&#xff0c;通过协同作用超越个体表现&#xff0c;使其成为在复杂场景中…

MySQL篇(主从复制/读写分离/分库分表)(持续更新迭代)

目录 讲解一&#xff1a;主从复制 一、何为主从复制&#xff1f; 二、主从复制的优点 三、主从复制原理 四、主从复制环境搭建 1. 准备 2. 主库配置 2.1. 修改配置文件 /etc/my.cnf 2.2. 重启MySQL服务器 2.3. 授予主从复制权限 2.4. 查看二进制日志坐标 3. 从库配置…

ubuntu 安装harbor

#安装包 wget https://github.com/goharbor/harbor/releases/download/v2.10.3/harbor-offline-installer-v2.10.3.tgz wget https://github.com/goharbor/harbor/releases/download/v2.10.3/harbor-offline-installer-v2.10.3.tgz.asc#导入签名公钥 gpg --keyserver hkps://ke…

EDM平台大比拼 用户体验与营销效果双重测评

本文评测了ZohoCampaigns、Mailchimp、Sendinblue、AWeber四款EDM平台&#xff0c;分别适合中小企业、多平台集成、多功能集成、初学者等需求。建议企业根据自身规模、技术水平和功能需求选择最适合的平台。 一、Zoho Campaigns 功能概述 Zoho Campaigns是Zoho旗下的一款专注…

每日OJ题_牛客_拼三角_枚举/DFS_C++_Java

目录 牛客_拼三角_枚举/DFS 题目解析 C代码1 C代码2 Java代码 牛客_拼三角_枚举/DFS 拼三角_枚举/DFS 题目解析 简单枚举&#xff0c;不过有很多种枚举方法&#xff0c;这里直接用简单粗暴的枚举方式。 C代码1 #include <iostream> #include <algorithm> …

探索RAG、AI Agents和Agentic RAG的架构、应用程序和主要区别

人工智能催生了能够执行各种任务的强大模型。该领域最具影响力的两项进步是检索增强生成 (RAG) 和Agents&#xff0c;它们在改进AI驱动的应用程序中发挥着独特的作用。然而&#xff0c;新兴的Agentic RAG概念提出了一种利用两种系统优势的混合模型。Agentic RAG是什么&#xff…

UML中类和类之间关系和各种图

文章目录 1.UML概述2.UML建模工具3.常见UML图_类图4.类图之类和类之间的关系5.用例图1.用例图是什么2.用例图所包含的元素3.用例图所包含的关系 6.状态图1.状态图是什么&#xff1f;2.状态图所包含的元素 7.活动图1.活动图的元素 8.时序图1.时序图是什么&#xff1f;2.时序图的…