数据之美:用「SpringBoot+ECharts」打造炫酷的数据可视化世界!

2023年 9月 12日 70.6k 0

👨‍🎓作者:bug菌
✏️博客:CSDN、掘金、infoQ、51CTO等
🎉简介:CSDN|阿里云|华为云|51CTO等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,掘金 | InfoQ | 51CTO等社区优质创作者,全网粉丝合计15w+ ;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等海量资料。

...

✍️温馨提醒:本文字数:1999字, 阅读完需:约 5 分钟

🏆本文收录于《Spring Boot从入门到精通》,专门攻坚指数提升。

本专栏致力打造最硬核 Spring Boot 从零基础到进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中…欢迎大家订阅持续学习。

环境说明:Windows10 + Idea2021.3.2 + Jdk1.8 + SpringBoot 2.3.1.RELEASE

  1. 前言

  在前几期,我们重点学习了如何在Spring Boot中使用模板引擎Thymeleaf开发Web应用的基础。接下来,我们介绍一下后端开发经常会遇到的一个场景:可视化图表。比如如下:

  通常啊,这类业务在客户端应用中不太能用到,但在后端的各种统计分析模块会经常碰到这类业务。比如展示:折线图、柱状图、饼图、雷达图等可视化展示形式,更直观的展现和分析经营状况或系统运行情况。这里我们将引入的数据可视化组件库ECharts来帮助我们完成这样的任务。

  那么,SpringBoot如何集成可视化组件库 ECharts来实现。这将又会是干货满满的一期,全程无尿点不废话只抓重点教,具有非常好的学习效果,拿好小板凳准备就坐!希望学习的过程中大家认真听好好学,学习的途中有任何不清楚或疑问的地方皆可评论区留言或私信,bug菌将第一时间给予解惑,那么废话不多说,直接开整!Fighting!! 


2 . 环境说明

本地的开发环境:

  • 开发工具:IDEA 2021.3
  • JDK版本: JDK 1.8
  • Spring Boot版本:2.3.1 RELEASE
  • Maven版本:3.8.2

3. ECharts简介

3.1 概念

  ECharts,缩写来自Enterprise Charts,商业级数据图表,一个纯Javascript的图表库,可以流畅的运行在PC和移动设备上。能够支持折线图、柱状图、散点图、K线图、饼图、雷达图、和弦图、力导向布局图、地图、仪表盘、漏斗图、事件河流图等12类图表,同时提供标题,详情气泡、图例、值域、数据区域、时间轴、工具箱等7个可交 互组件,支持多图表、组件的联动和混搭展现。

3.2 特点

  • 可视化类型丰富,并且提供了华丽的特效。
  • 多渲染方案,能够跨平台使用,支持以 Canvas、SVG(4.0+)、VML 的形式渲染图表。
  • 多维数据的支持以及丰富的视觉编码手段,例如对于传统散点图等,传入的数据也可以是多个维度的。
  • 多种数据格式无需转换直接使用,内置的 dataset 属性(4.0+)支持直接传入包括二维表,key-value 等多种格式的数据源,此外还支持输入 TypedArray 格式的数据。
  • 无障碍访问(4.0+),能够支持自动根据图表配置项智能生成描述,使得盲人可以在朗读设备的帮助下了解图表内容,让图表可以被更多人群访问!
  • 3.3 官网

      大家可以去它的官网瞅瞅,各式各样的Echarts图例。

    官方网站:Apache ECharts

    图表示例:Examples - Apache ECharts

    4. 集成Echarts🔥

      接下来,我就来教大家如何在项目中引入其Echarts图表。 并且会达到能访问地址有图表完整展示效果,同学们可得好好听,认真学。

    4.1 引入依赖

      这里需要引入web模块和模板引擎thymeleaf模块,这里我们静态模板就用Thymeleaf。

                
                
                    org.springframework.boot
                    spring-boot-starter-web
                
                
                
                
                    org.springframework.boot
                    spring-boot-starter-thymeleaf
                
    

    4.2 创建Controller类

      这里我们定义一个Controller,将/路径的请求,映射到 eCharts.js 页面。

        package com.example.demo.controller;
    
        import io.swagger.annotations.Api;
        import org.springframework.stereotype.Controller;
        import org.springframework.web.bind.annotation.GetMapping;
        import org.springframework.web.bind.annotation.RequestMapping;
    
        @Controller
        @RequestMapping("/echarts")
        @Api(tags = "echarts图表演示", description = "echarts图表演示")
        public class EchartsController {
    
            @GetMapping("/basic-line")
            public String index() {
                return "eCharts";
            }
    
        }
    

      这里就不细讲为何是直接return 一个html 页面名了,懂得都懂。 

    4.3 创建html静态页面

      这里我们创建一个静态html页面,命名为:eCharts.html.

      新建一个 echarts.html 文件,为 ECharts 准备一个具备大小(宽高)的 Dom。

        
    

      然后重点来了,我们需要引入我们需要展示的Echarts图表,比如,我们就拿Echarts官网第一个则线图来进行举例:

      我们只需要将其option图表设置 直接复制放进到

        
        
        
        
            
            SpringBoot使用ECharts图表演示
            
        
        
        
        
    
        
            // 初始化ECharts组件到id为main的元素上
            let myChart = echarts.init(document.getElementById('all'));
            // 定义图标的配置项
            let option = {
                title: {
                    text: 'SpringBoot使用ECharts图表演示'
                },
                tooltip: {},
                // x轴配置
                xAxis: {
                    type: 'category',
                    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
                },
                // y轴配置
                yAxis: {
                    type: 'value'
                },
                series: [
                    {
                        // 数据集(也可以从后端的Controller中传入)
                        data: [150, 230, 224, 218, 135, 147, 260],
                        // 图表类型,这里使用line,为折线图
                        type: 'line'
                    }
                ]
            };
            myChart.setOption(option);
        
        
    

    解读一下如上代码:

    1.中通过标签引入ECharts的组件JS,这里静态引入本地的,实现动静分离。

    2.中定义了一个id为all的标签,这个标签后续将用来渲染EChart组件最后的一段。

    3.内容则是具体的EChart图标的展现初始化和配置。具体配置内容可见代码中的注释信息。

    4.同如上点1,如果你直接引用bootcss的免费公共cdn,访问js时直接跨域导致无法正常引用。

      如果有遇到此类问题,建议到直接从官网将该静态资源下载引入到本地,比如:我是将echarts.min.js 存放在 resources/static/js/ 下,这样就实现了从本地访问,如果有不清楚的同学为何要将静态资源放置到static目录下,可以参考我写的这篇《Spring Boot之静态资源映射》,超级详细。目录截图展示如下:

      这里涉及到的 echarts.min.js  你们可以去我的 GitHub上自取,也可以从这个地址中直接另存为:cdn.bootcss.com/echarts/4.6…

    4.4 启动访问

      这里我们直接进行路径地址访问:比如我的:http://localhost:8080/echarts/basic-line

      这个看大家具体项目路径设置,浏览器输入地址回车,如果上面操作均无差错,那我们就会得到下面的折线图:

    5. 热文推荐

      若想学习更多,可以参考这篇专栏总结《2023最新首发,全网最全 Spring Boot 学习宝典(附思维导图)》,本专栏致力打造最硬核 Spring Boot 进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中。欢迎大家订阅持续学习。

      在入门及进阶之途,我必助你一臂之力,系统性学习,从入门到精通,带你不走弯路,直奔终点;投资自己,永远性价比最高,都这么说了,你还不赶紧来学??

    本文涉及所有源代码,均已上传至github开源,供同学们一对一参考 GitHub传送门,

    同时,原创开源不易,欢迎给个star🌟,想体验下被🌟的感jio,非常感谢❗

    6. 文末

      我是bug菌,CSDN | 阿里云 | 华为云 | 51CTO 等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,掘金 | InfoQ | 51CTO等社区优质创作者,全网粉丝合计15w+ ;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等海量资料。

    相关文章

    JavaScript2024新功能:Object.groupBy、正则表达式v标志
    PHP trim 函数对多字节字符的使用和限制
    新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
    使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
    为React 19做准备:WordPress 6.6用户指南
    如何删除WordPress中的所有评论

    发布评论