[echarts]橫向柱狀圖

前言

接到一個需求,需要展示一個橫向的柱狀圖,按數量從大到小排序,并定時刷新
使用react配合echarts進行實現。

react引入echarts

import React, { useEffect, useRef } from 'react';
import * as echarts from 'echarts';
import DeviceApi from '@/api/screen/DeviceApi';const CenterRank = (props) => {const chartRef = useRef(null);const initEcharts = () => {if (chartRef.current) {const chart = echarts.init(chartRef.current);const option = {legend: {show: true},grid: {  //控制圖形大小top: '12%',left: '3%',right: '8%',bottom: '3%',containLabel: true},xAxis: {max: 'dataMax',type: 'value',boundaryGap: [0, 0.01],axisLine: {show: false},axisTick: {show: false},splitLine: {show: false},axisLabel: {show: false}},yAxis: [{type: 'category',data: [],inverse: true,animationDuration: 0,animationDurationUpdate: 500,axisLabel: {show: true,inside: true,interval: 0,splitNumber: 50,textStyle: {color: '#9FFFFD',verticalAlign: 'bottom',fontSize: '0.8rem',align: 'left',padding: [0, 0, 8, -5]   //y軸在柱子上方},formatter: function (value) {const top = value.split(' ')[0];const center = value.split(' ')[1];if (value.startsWith("Top1") || value.startsWith("Top2") || value.startsWith("Top3")) {return '{' + top + '|' + top + '}' + ' {center|' + center + '}';} else {return '{other|' + top + '}' + ' {center|' + center + '}';}},rich: {  //富文本樣式,配置Top1 2 3的不同樣式Top1: {padding: 2,color: '#FA5151',backgroundColor: 'rgba(250,81,81,0.24)',},Top2: {padding: 2,color: '#FF8F1F',backgroundColor: 'rgba(255,143,31,0.24)',},Top3: {padding: 2,color: '#FFC300',backgroundColor: 'rgba(255,195,0,0.24)',},other: {padding: 2,color: '#9FFFFD',backgroundColor: 'rgba(159,255,253,0.24)',},}},axisLine: {show: false},axisTick: {show: false},splitLine: {show: false}},{  //配兩個y軸,可以做出label在柱子末端展示的效果type: 'category',position: 'top',data: [],axisLabel: {show: true,color: '#fff',formatter: (value, index) => {return `${value}h`;},},axisLine: {show: false},axisTick: {show: false},},],series: [{realtimeSort: true,type: 'bar',data: [],label: {show: false,position: 'right',valueAnimation: true,formatter: '{c}h',fontSize: '0.8rem',color: '#fff'},barWidth: 6,   // 條形的寬度itemStyle: {borderRadius: 0,color: function (params) {  // 設置顏色為線性漸變return new echarts.graphic.LinearGradient(1, 0, 0, 0,[{ offset: 0, color: '#2FFFFD' },{ offset: 1, color: 'rgba(47,255,253,0)' }],false);},},showBackground: true,  //柱子的背景色backgroundStyle: {color: 'rgba(159,255,253,0.3)'}}],animationDuration: 3000,animationDurationUpdate: 5000,animationEasing: 'linear',animationEasingUpdate: 'linear'};chart.setOption(option);const fetchData = async () => {try {const response = await DeviceApi.getUsageRank();response.sort((a, b) => b.occupyTime - a.occupyTime)  //根據occupyTime進行排序const data = { labels: response.map(item => item.orgName), values: response.map(item => item.occupyTime) }data.labels = data.labels.map((item, index) => {return `Top${index + 1} ${item}`})chart.setOption({yAxis: [{data: data.labels},{data: response.map(item => item.occupyTime).reverse()}],series: [{data: data.values}]});} catch (error) {console.error('Error fetching data:', error);}}fetchData();const intervalId = setInterval(fetchData, 60 * 60 * 1000);  //1小時刷新一次window.addEventListener('resize', chart.resize);return () => {window.removeEventListener('resize', chart.resize);clearInterval(intervalId);chart.dispose();};}};useEffect(() => {initEcharts();}, []);return (<div title="使用時長排名"><div ref={chartRef} style={{ height: '100%', width: '100%' }} /></div>)
}export default CenterRank;

最終效果

在這里插入圖片描述

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

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

相關文章

【開源項目】輕量加速利器 HubProxy 自建 Docker、GitHub 下載加速服務

??引言?? 如果你經常被 Docker 鏡像拉取、GitHub 文件下載的龜速折磨&#xff0c;又不想依賴第三方加速服務&#xff08;擔心穩定性或隱私&#xff09;&#xff0c;今天分享的 ??HubProxy?? 可能正是你需要的。這個開源工具用一行命令就能部署&#xff0c;以極低資源消…

java web jsp jstl練習

JSP 的學習。 核心功能模塊 1. 源代碼層 &#xff08; src &#xff09; HelloWorld &#xff1a;主程序入口領域模型 &#xff1a; domain 包含User.java和ceshi.java控制器 &#xff1a; servlet 包含登錄驗證和驗證碼相關ServletWeb表現層 &#xff08; web &#xff09; JS…

VSCode 完全指南:釋放你的編碼潛能

零、簡介 在當今的軟件開發領域&#xff0c;代碼編輯器的選擇至關重要&#xff0c;它就像是工匠手中的工具&#xff0c;直接影響著工作效率和成果質量。Visual Studio Code&#xff08;簡稱 VSCode&#xff09;自問世以來&#xff0c;迅速在全球開發者社區中嶄露頭角&#xff…

《n8n基礎教學》第一節:如何使用編輯器UI界面

在本課中&#xff0c;你將學習如何操作編輯器界面。我們將瀏覽畫布&#xff0c;向您展示每個圖標的含義&#xff0c;以及在 n8n 中構建工作流程時在哪里可以找到您需要的東西。本課程基于 n8n 最新版本 。在其他版本中&#xff0c;某些用戶界面可能有所不同&#xff0c;但這不會…

gcc g++ makefile CMakeLists.txt cmake make 的關系

gcc&#xff1a;C語言編譯器g&#xff1a;C編譯器makefile&#xff1a;定義編譯規則、依賴關系和構建目標。可以手動編寫&#xff0c;也可以由CMakeLists.txt生成cmake&#xff1a;讀取CMakeLists.txt文件&#xff0c;生成Makefilemake&#xff1a;構建工具&#xff0c;執行Mak…

SFT 訓練器

SFT 訓練器 “訓練時間到!” 我們現在終于可以創建一個監督微調訓練器的實例了: trainer = SFTTrainer( model=model, processing_class=tokenizer, args=sft_config, train_dataset=dataset, )SFTTrainer 已經對數據集進行了預處理,因此我們可以深入查看,了解每個小批次…

Android Material Components 全面解析:打造現代化 Material Design 應用

引言 在當今移動應用開發領域&#xff0c;用戶體驗(UX)已成為決定應用成功與否的關鍵因素之一。Google推出的Material Design設計語言為開發者提供了一套完整的視覺、交互和動效規范&#xff0c;而Material Components for Android(MDC-Android)則是將這些設計理念轉化為可重用…

Windows使用Powershell自動安裝SqlServer2025服務器與SSMS管理工具

安裝結果: 安裝前準備: 1.下載mssql server 2025安裝器 2.下載iso鏡像 3.下載好SSMS安裝程序,并放到iso同目錄下 4.執行腳本開始自動安裝

09 RK3568 Debian11 ES8388 模擬音頻輸出

1、設備樹配置 確認自己的i2c,使用sdk帶的驅動es8323 /SDK/kernel/sound/soc/codecs/es8323.c es8388_sound: es8388-sound {status = "okay";compatible = "rockchip,multicodecs-card"; rockchip,card-name = "rockchip,es8388-codec"; …

力扣-199.二叉樹的右視圖

題目鏈接 199.二叉樹的右視圖 class Solution {public List<Integer> rightSideView(TreeNode root) {List<Integer> res new ArrayList<>();Queue<TreeNode> queue new LinkedList<>();if (root null)return res;queue.offer(root);while …

Android Bitmap 完全指南:從基礎到高級優化

在 Android 開發中&#xff0c;圖像處理是一個核心且復雜的領域&#xff0c;而 Bitmap 作為 Android 中表示圖像的基本單位&#xff0c;貫穿了從簡單圖片顯示到復雜圖像編輯的各個場景。然而&#xff0c;Bitmap 處理不當往往會導致應用性能下降、內存溢出&#xff08;OOM&#…

unity日志過濾器

背景&#xff1a;之前做游戲的時候和同組的同事聊過說日志過濾盡量不要限制大家怎么使用日志打印的接口&#xff0c;不要加額外的參數&#xff0c;比如多加一個標簽string,或者使用特定的接口&#xff0c;枚舉。最好就是日志大家還是用Debug.Log無感去用&#xff0c;然后通過勾…

OpenGL Camera

一. lookAt函數的參數含義glm::mat4 view glm::lookAt(cameraPos, // 相機在世界坐標系中的位置&#xff08;任意值&#xff09;cameraPos cameraFront, // 相機看向的目標點&#xff08;位置朝向&#xff09;cameraUp // 相機的"上方向"&#xff08;通…

Android RTMP推送|輕量級RTSP服務同屏實踐:屏幕+音頻+錄像全鏈路落地方案

一、背景&#xff1a;從“移動終端”到“遠程協作節點”&#xff0c;同屏音頻錄像為何成剛需&#xff1f; 在數字化辦公、智慧醫療與遠程教育等快速發展的推動下&#xff0c;手機作為隨身終端&#xff0c;已不再只是“內容接收者”&#xff0c;而逐步成為遠程信息發布與可視化…

NLP 和 LLM 區別、對比 和關系

理解自然語言處理(NLP)和大語言模型(LLM)的區別、對比和關系對于把握現代人工智能的發展非常重要。以下是清晰的分析: 核心定義 NLP (Natural Language Processing - 自然語言處理): 是什么: 一個廣闊的計算機科學和人工智能子領域,致力于讓計算機能夠理解、解釋、操作…

Altium 移除在原理圖之外的元器件

Altium新手&#xff0c;最近在畫原理圖的時候&#xff0c;遇見了這種不小心拖到界面外的元器件&#xff0c;發現拖不回來了了&#xff0c;查閱了一下&#xff0c;總結在這里 官方推薦的方法----------------使用“SCH List”面板刪除 鏈接&#xff1a;如何移除在原理圖之外的元…

【Linux我做主】細說環境變量

Linux環境變量Linux環境變量github地址前言1. 基本概念環境變量的本質2. 認識常見的環境變量PATH查看PATH修改PATHHOMESHELL其他常見環境變量PWD與OLDPWDLOGNAME與USERSSH_TTY由環境變量理解權限使用系統調用獲取環境變量理解權限3. 總結什么是環境變量3. 命令行參數和環境變量…

leecode-15 三數之和

我的解法&#xff08;不是完全解309/314&#xff09;我的思路是定義一個left和一個right&#xff0c;然后在向集合里去查詢&#xff0c;看看有沒有除了nums[left]&#xff0c;和nums[right]的第三個元素&#xff0c;把這個問題轉換為一個遍歷查找問題 利用List.contains()方法來…

精通分類:解析Scikit-learn中的KNN、樸素貝葉斯與決策樹(含隨機森林)

在機器學習領域&#xff0c;分類任務占據核心地位。Scikit-learn作為Python的機器學習利器&#xff0c;提供了豐富高效的分類算法。現在進行初步探討三種經典算法&#xff1a;K最近鄰&#xff08;KNN&#xff09;、樸素貝葉斯&#xff08;Naive Bayes&#xff09;和決策樹&…

Galaxea機器人由星海圖人工智能科技有限公司研發的高性能仿人形機器人

Galaxea機器人是由星海圖人工智能科技有限公司研發的高性能仿人形機器人&#xff0c;具有多種型號&#xff0c;包括Galaxea R1和Galaxea R1 Pro。以下是關于Galaxea機器人的詳細介紹&#xff1a; GitHub官網 產品特點 高自由度設計&#xff1a;Galaxea R1是一款全尺寸仿人型機…