echart圖表使用

2、接口編寫

該部分代碼定義了UserController控制器類,用于處理與用戶相關的請求。包含一個用于跳轉頁面的方法和一個返回用戶詳細數據(以 JSON 格式呈現)的接口。前者負責將用戶導航至指定頁面,后者通過構建ChartVO對象并填充數據,為前端展示圖表提供所需的數據支撐。

@Controller
@RequestMapping("/admin")
public class UserController {@RequestMapping("/index")public String toUserDetail() {return "admin/index";}// 返回 JSON 數據@GetMapping("/user/detail/getChartData")@ResponseBodypublic ChartVO getUserDetail() {ChartVO chartVO = new ChartVO();chartVO.setEasy(1);chartVO.setMedium(2);chartVO.setHard(3);chartVO.setXAxis(new String[]{"1", "2", "7", "4", "5", "6", "4", "8", "1", "10"});chartVO.setNums(new Integer[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10});chartVO.setYAxis4(new String[]{"1", "2", "7", "4", "5", "6"});chartVO.setType4(new Integer[]{1, 2, 3, 4, 5, 6});chartVO.setYAxis3(new String[]{"1", "2", "7", "4", "5", "6"});chartVO.setType3(new Integer[]{1, 2, 3, 4, 5, 6});return chartVO;}
}

3、引入echart組件

ECharts 是一款基于 JavaScript 的數據可視化圖表庫,通過模塊化的加載方式適配不同的環境(如 CommonJS、AMD 或全局變量)。該代碼片段通過自執行函數判斷當前環境,將 ECharts 掛載到全局對象中,為后續在前端頁面中使用 ECharts 渲染圖表提供基礎。


/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied.  See the License for the
* specific language governing permissions and limitations
* under the License.
*/(function (global, factory) {typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :typeof define === 'function' && define.amd ? define(['exports'], factory) :(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.echarts = {}));
}

4、前端頁面代碼

通過 Thymeleaf 模板引擎動態引入頁面的頭部導航、側邊欄和頁腳等公共模塊,并定義了多個用于渲染 ECharts 圖表的容器(如#pie#line#echart3#echart4)。這些容器將與后續 JavaScript 代碼配合,展示從后端獲取的數據可視化圖表。

<div class="wrapper"><!-- 引入頁面頭header-fragment --><div th:replace="admin/common/commons::header-nav"></div><!-- 引入工具欄sidebar-fragment --><div th:replace="admin/common/commons::sidebar-fragment(${path})"></div><!-- Content Wrapper. Contains page content --><div class="content-wrapper"><!-- Main content --><div class="content"><div class="container-fluid"><div class="analyze"><div class="fd-content-wrap fd-flex-wrap"><div class="fd-left-wrap fd-sr-wrap"><div class="fd-inner-wrap"><div class="echart" id="pie"></div></div></div><div class="fd-right-wrap"><div class="fd-inner-wrap fd-zc-wrap"><div class="echart" id="line"></div></div></div></div><div class="fd-content-wrap fd-flex-wrap"><div class="fd-left-wrap"><div class="fd-inner-wrap"><div class="echart" id="echart3"></div></div></div><div class="fd-right-wrap"><div class="fd-inner-wrap fd-szqsfx-chart-wrap"><div class="echart" id="echart4"></div></div></div></div></div></div></div><!-- /.content --></div><!-- /.content-wrapper --><!-- 引入頁腳footer-fragment --><div th:replace="admin/common/commons::footer-fragment"></div>
</div>

5、前端js代碼

通過echarts.init()方法創建圖表實例,結合從后端獲取的數據,定義圖表的標題、顏色、提示框、坐標軸、數據系列等參數,最終使用setOption()方法將配置應用到圖表中,實現 “薄弱點” 和 “通過題目較多的類型” 等數據的可視化展示。

<script th:inline="javascript">var myEchart4 = echarts.init(document.getElementById('echart4'));myEchart4.title = '坐標軸刻度與標簽對齊';option4 = {// 標題title: {text: '薄弱點'},color: ['#3398DB'],tooltip: {trigger: 'axis',axisPointer: {            // 坐標軸指示器,坐標軸觸發有效type: 'shadow'        // 默認為直線,可選為:'line' | 'shadow'}},grid: {left: '3%',right: '3%',top: '18%',  // 調整頂部間距containLabel: true},// 交換X軸和Y軸的定義yAxis: [{type: 'category',  // Y軸現在顯示類別data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],axisTick: {alignWithLabel: true}}],xAxis: [{type: 'value'  // X軸現在顯示數值}],series: [{name: '直接訪問',type: 'bar',barWidth: '60%',data: [10, 52, 200, 334, 390, 330, 220],itemStyle: {normal: {color: function(params) {var colorList = ['#2eddc1','#FCCE10','#E87C25','#277bbb','#E87fff','#E87fff', 'E87fff'];// 若返回的list長度不足,不足部分自動顯示為最后一個顏色return colorList[params.dataIndex]},label: {show: true,position: 'right'  // 標簽顯示在條形的右側}}}}]};myEchart4.setOption(option4);var myChart = echarts.init(document.getElementById('echart3'));myChart.title = '坐標軸刻度與標簽對齊';option = {// 標題title: {text: '通過題目較多的類型'},color: ['#3398DB'],tooltip: {trigger: 'axis',axisPointer: {            // 坐標軸指示器,坐標軸觸發有效type: 'shadow'        // 默認為直線,可選為:'line' | 'shadow'}},grid: {left: '3%',right: '3%',top: '18%',  // 調整頂部間距containLabel: true},// 交換X軸和Y軸的定義yAxis: [{type: 'category',  // Y軸現在顯示類別data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],axisTick: {alignWithLabel: true}}],xAxis: [{type: 'value'  // X軸現在顯示數值}],series: [{name: '直接訪問',type: 'bar',barWidth: '60%',data: [10, 52, 200, 334, 390, 330, 220],itemStyle: {normal: {color: function(params) {var colorList = ['#2eddc1','#FCCE10','#E87C25','#277bbb','#E87fff','#E87fff', 'E87fff'];// 若返回的list長度不足,不足部分自動顯示為最后一個顏色return colorList[params.dataIndex]},label: {show: true,position: 'right'  // 標簽顯示在條形的右側}}}}]};myChart.setOption(option);</script>

6、效果圖

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/78361.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/78361.shtml
英文地址,請注明出處:http://en.pswp.cn/web/78361.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android短信監控技術實現:合法合規的遠程采集方案

一年經驗的全棧程序員&#xff0c;目前頭發健在&#xff0c;但不知道能撐多久。 該項目已成功部署并穩定運行于企業生產環境&#xff0c;如需個性化定制方案&#xff0c;歡迎聯系作者進行深度合作。 文章目錄 前言 一、頁面設計 1.頁面顯示 2.代碼實現 二、具體代碼實現 1.添加…

前端跨域問題怎么在后端解決

目錄 簡單的解決方法&#xff1a; 添加配置類&#xff1a; 為什么會跨域 1. 什么是源 2. URL結構 3. 同源不同源舉&#x1f330; 同源例子 不同源例子 4. 瀏覽器為什么需要同源策略 5. 常規前端請求跨域 簡單的解決方法&#xff1a; 添加配置類&#xff1a; packag…

【中間件】brpc_基礎_execution_queue

execution_queue 源碼 1 簡介 execution_queue.h 是 Apache BRPC 中實現 高性能異步任務執行隊列 的核心組件&#xff0c;主要用于在用戶態線程&#xff08;bthread&#xff09;中實現任務的 異步提交、有序執行和高效調度。 該模塊通過解耦任務提交與執行過程&#xff0c;提…

java學習之數據結構:一、數組

主要是對數組所有的東西進行總結&#xff0c;整理 適合小白~ 目錄 1.什么是數組 1.1數組定義 1.2數組創建 1&#xff09;靜態創建 2&#xff09;動態創建 1.3數組遍歷 1&#xff09;for和while遍歷 2&#xff09;foreach遍歷 2.數組越界問題及解決 2.1數組越界問題 2…

[Survey]SAM2 for Image and Video Segmentation: A Comprehensive Survey

BaseInfo TitleSAM2 for Image and Video Segmentation: A Comprehensive SurveyAdresshttps://arxiv.org/abs/2503.12781Journal/Time2503Author四川大學&#xff0c;北京大學 1. Introduction 圖像分割專注于識別單個圖像中的目標、邊界或紋理&#xff0c;而視頻分割則將這…

用Maven定位和解決依賴沖突

用Maven定位和解決依賴沖突 一、依賴沖突的常見表現二、定位沖突依賴的4種方法2.1 使用Maven命令分析依賴樹2.2 使用IDE可視化工具2.3 使用Maven Enforcer插件2.4 運行時分析 三、解決依賴沖突的5種方案3.1 排除特定傳遞依賴3.2 統一指定版本&#xff08;推薦&#xff09;3.3 使…

穿越數據森林與網絡迷宮:樹與圖上動態規劃實戰指南

在 C 算法的浩瀚宇宙中&#xff0c;樹與圖就像是神秘的迷宮和茂密的森林&#xff0c;充滿了未知與挑戰。而動態規劃則是我們探索其中的神奇羅盤&#xff0c;幫助我們找到最優路徑。今天&#xff0c;就讓我們一起深入這片神秘領域&#xff0c;揭開樹與圖上動態規劃的神秘面紗&am…

UDP / TCP 協議

目錄 一、前言&#xff1a; 數據封裝與分用&#xff1a; 二、網絡協議分層模型&#xff1a; 三、UDP / TCP 協議 UDP 協議&#xff1a; 1、UDP 協議段格式&#xff1a; 2、UDP 的特點&#xff1a; TCP 協議&#xff1a; 1、TCP 協議段格式&#xff1a; 2、TCP 協議的十…

Python 實現的運籌優化系統數學建模詳解(動態規劃模型)

相關代碼鏈接&#xff1a;https://download.csdn.net/download/heikediguoshinib/90713747?spm1001.2014.3001.5503 一、引言 在計算機科學與數學建模的廣闊領域中&#xff0c;算法如同精密的齒輪&#xff0c;推動著問題的解決與系統的運行。當面對復雜的優化問題時&…

langfuse本地安裝

目錄 安裝命令項目準備用openai測試 安裝命令 本地&#xff08;docker compose&#xff09;&#xff1a;使用 Docker Compose 在你的機器上于 5 分鐘內運行 Langfuse。 # 獲取最新的 Langfuse 倉庫副本 git clone https://github.com/langfuse/langfuse.git cd langfuse# 運行 …

每天學一個 Linux 命令(35):dos2unix

每天學一個 Linux 命令(35):dos2unix 命令簡介 dos2unix 是一個用于將 Windows/DOS 格式的文本文件轉換為 Unix/Linux 格式的實用工具。它主要處理行尾符的轉換(將 CRLF 轉換為 LF),同時也能處理編碼問題和字符集轉換。這個命令在跨平臺文件共享、代碼遷移和系統管理場…

第6章 Python 基本數據類型詳解(int, float, bool, str)細節補充

文章目錄 Python 基本數據類型深入解析(int, float, bool, str)一、整型(int)的底層機制二、浮點型(float)的陷阱與解決方案三、布爾型(bool)的底層本質四、字符串(str)的不可變性與優化五、類型間的隱式轉換與陷阱六、性能優化與工具總結:關鍵細節與最佳實踐Python…

19. LangChain安全與倫理:如何避免模型“幻覺“與數據泄露?

引言&#xff1a;當AI成為企業"數字員工"時的責任邊界 2025年某金融機構因AI客服泄露用戶信用卡信息被罰款2300萬美元。本文將基于LangChain的安全架構與Deepseek-R1的合規實踐&#xff0c;揭示如何構建既強大又安全的AI系統。 一、AI安全風險矩陣 1.1 2025年最新威…

Java快速上手之實驗六

1. 編寫ItemEventDemo.java&#xff0c;當選中或取消選中單選鈕、復選鈕和列表框時顯示所選的結果。 2&#xff0e;編寫GUIExample.java&#xff0c;當選中或取消選中單選鈕、復選鈕時在標簽中顯示相應結果。 import javax.swing.*; import java.awt.*; import java.awt.event.…

QT6 源(72):閱讀與注釋單選框這個類型的按鈕 QRadioButton,及各種屬性驗證,

&#xff08;1&#xff09;按鈕間的互斥&#xff1a; &#xff08;2&#xff09;源碼來自于頭文件 qradiobutton . h &#xff1a; #ifndef QRADIOBUTTON_H #define QRADIOBUTTON_H#include <QtWidgets/qtwidgetsglobal.h> #include <QtWidgets/qabstractbutton.h>…

【算法滑動窗口】 將x減到0的最小操作數

將x減到0的最小操作數 個人總結的八步歸納AI的歸納**8步歸納法&#xff08;極簡直白版&#xff09;**1. 問題本質2. 問題特征3. 切入點4. 解決流程5. 每步目標與操作6. 注意事項7. 最終目標8. 整體總結 代碼對照&#xff08;逐行解析&#xff09;舉個栗子&#x1f330;**一句話…

RISC-V GPU架構研究進展:在深度學習推理場景的可行性驗證

一、新型算力架構的突圍戰 在英偉達CUDA生態主導的GPU市場中&#xff0c;RISC-V架構正以?開源基因?和?模塊化設計?開辟新賽道。當前主流GPU架構面臨兩大痛點&#xff1a; 指令集封閉性?&#xff1a;NVIDIA的SASS指令集與AMD的GCN/RDNA架構均采用私有指令編碼&#xff0c…

LVGL -滑動條

1 滑動條 LVGL 的滑動條(Slider)是一個非常有用的控件,允許用戶通過拖動滑塊或點擊滑條來選擇一個值。 1.1 基本定義 滑動條允許用戶在一個預定義的數值范圍內選擇一個特定的值。它通常由一個軌道(track)和一個滑塊(thumb)組成。用戶可以通過點擊或拖動滑塊來調整數值。…

ROS2學習筆記|Python實現訂閱消息并朗讀的詳細步驟

本教程將詳細介紹如何使用 ROS 2 實現一個節點訂閱另一個節點發布的消息&#xff0c;并將接收到的消息通過 espeakng 庫進行朗讀的完整流程。以下步驟假設你已經安裝好了 ROS 2 環境&#xff08;以 ROS 2 Humble 為例&#xff09;&#xff0c;并熟悉基本的 Linux 操作。 注意&…

WPF封裝常用的TCP、串口、Modbus、MQTT、Webapi、PLC通訊工具類

WPF封裝常用通訊工具類 下面我將為您封裝常用的TCP、串口、Modbus、MQTT、WebAPI和PLC通訊工具類,適用于WPF應用程序開發。 一、TCP通訊工具類 using System; using System.Net.Sockets; using System.Text; using System.Threading.Tasks;public class TcpClientHelper : …