折線圖實現柱狀陰影背景的demo

這個是一個由官網的基礎折線圖實現的流程,將涉及到的知識點附上個人淺薄的見解,源碼在最后,需要的可自取。

折線圖

  • 成果展示
  • 代碼注解
    • 參數
    • backgroundColor
    • dataZoom
    • legend
    • title
    • xAxis
    • yAxis
    • grid
    • series
  • 源碼

成果展示

官網的基礎折線圖:
在這里插入圖片描述
最終效果圖:
在這里插入圖片描述

代碼注解

參數

xdata :x軸數據
ydata1 :第一條折線line1數據
ydata2 :第二條折線line2數據
bgdata :柱狀陰影條的數據,這里統一設置為40,是因為ydata1和 ydata2的最大值都在40范圍內,以達到陰影撐滿圖標高度的效果,同時,也可設置yAxis的max值與bgdata 里的值一致
threshold :用于存放每個x軸數據對應的line1和line2相差的最大值
average :總平均時長
historyAveraged :步驟平均耗時
averageCount :步驟總數

這里的值均為固定值,后期可根據自身需求添加數據邏輯

var xdata = ["第1步 步驟名稱","第2步 步驟名稱","第3步 步驟名稱","第4步 步驟名稱","第5步 步驟名稱","第6步 步驟名稱","第7步 步驟名稱","第8步 步驟名稱","第9步 步驟名稱","第10步 步驟名稱","第11步 步驟名稱","第12步 步驟名稱","第13步 步驟名稱","第14步 步驟名稱","第15步 步驟名稱","第16步 步驟名稱","第17步 步驟名稱","第18步 步驟名稱", "第19步 步驟名稱","第20步 步驟名稱","第21步 步驟名稱","第22步 步驟名稱","第23步 步驟名稱","第24步 步驟名稱",];var ydata1 = [21,20,34,31,22,18,18,18,18,18,18,21,15,34,31,22,18,18,18,18,18,18,18,18,];var ydata2 = [18,16,25,30,15, 18,18,18,18,18,18,18,16,25,30,15,18,18,18,18,18, 18,18,18,];var bgdata = [40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40, 40,40,];var threshold = 7;var average = 140,historyAveraged = 5.6,averageCount = 2.5;

backgroundColor

官網api可查看具體參數:點擊跳轉至官網查看backgroundColor
這里直接配置顏色參數。

backgroundColor: "transparent",//透明背景色,跟隨父盒子顏色,看板中比較常用
backgroundColor: "#375a84",//成果主圖的背景顏色

dataZoom

官網api可查看具體參數:點擊跳轉至官網查看dataZoom
dataZoom 就是可用于縮放和平移數據的組件,可以用于對大量數據進行局部放大或整體滾動查看。dataZoom 可以水平或垂直放置在圖表的底部或側邊,并支持拖拽、滾動、點擊等交互操作。

dataZoom: [{type: "slider", // 設置為滑動條show: true, // 顯示滑動條start: 0, // 滑動條起始位置end: 100 / (12 - 10) - 1, // 滑動條結束位置bottom: 10, // 滑動條距離底部的距離textStyle: {color: "#fff",},backgroundColor: "#acb7c3", // 設置背景顏色handleStyle: {color: "#2a82e4", // 設置左右兩邊的可滑動收縮豎線顏色},},],

legend

官網api可查看具體參數:點擊跳轉至官網查看legend
legend 用于展示圖表中不同系列的標識和名稱的組件,通過legend,用戶可以快速了解每個系列所代表的含義,并可以通過點擊圖例項來切換顯示或隱藏對應的數據系列。

legend: {data: ["步驟平均時長", "步驟歷史平均時長"],orient: "vertical", // 設置圖例垂直排列right: 10, // 調整圖例距離右側的距離top: "top", // 設置圖例位于上方itemWidth: 10, // 設置寬度itemHeight: 10, // 設置高度textStyle: {//設置字體樣式color: "#fff",//字體顏色},},

title

官網api可查看具體參數:點擊跳轉至官網查看title
title 是用于設置圖表標題的組件,可以用來展示整個圖表的主題或概要信息。通過 title 組件,用戶可以自定義圖表的標題文字、樣式、位置等屬性。
可以通過設置 left、top、right、bottom 等屬性,可以調整標題的位置。并且Echarts 中的 title 組件是能單獨存在的,也能放在整個 option 配置對象中的任何位置。
可根據自己需求調整title的位置。

title: {// 添加title屬性text:"總平均時長" +average +"s\n\n步驟總數" +averageCount +"\n\n步驟平均耗時" +historyAveraged +"s", // 自定義的文字內容//subtext: '副標題', // 設置副標題文字//left: 'center' // 設置標題水平居中orient: "vertical", // 設置圖例垂直排列right: 10, // 調整圖例距離右側的距離top: 80, // 設置圖例位于上方itemWidth: 10, // 設置寬度itemHeight: 10, // 設置高度textStyle: {color: "#fff",fontSize: 12,//設置字體大小},},

xAxis

官網api可查看具體參數:點擊跳轉至官網查看xaxis
xAxis(x 軸)用于顯示水平方向的坐標軸,通常用于表示類目數據或數值數據。在 ECharts 中,可以通過配置 xAxis 屬性來對 x 軸進行設置。
以下是一些常見的 xAxis 配置選項:

type: x 軸類型,可以是 ‘value’(數值軸)、‘category’(類目軸)、‘time’(時間軸)等。
data: 類目軸的數據,在 type 為 ‘category’ 時使用。
axisLabel: x 軸刻度標簽的設置,可以設置字體顏色、字體大小等樣式。
axisLine: x 軸線的樣式設置,可以設置線條顏色、粗細等。
name: x 軸名稱。
nameTextStyle: x 軸名稱的樣式設置,可以設置顏色、字體大小等。
splitLine: 分隔線的設置,可以顯示或隱藏 x 軸的分隔線。

xAxis: {type: "category",// 橫軸類型為類目軸,適用于離散的類目數據data: xdata,// 設置 x 軸的數據,即類目軸的數據源axisLabel: {// 設置 x 軸標簽的樣式formatter: function (value) {return value.split(" ").join("\n"); // 自定義軸標簽格式化函數,使用換行符拆分字符串并重新連接},textStyle: {// 設置軸標簽文字的樣式fontSize: 12, // 設置 x 軸字體大小為 12pxcolor: function (params) {// 根據條件動態設置文字顏色if (params == "第3步 步驟類型") {return "rgba(190, 53, 59, 1)";// 如果標簽為"第3步 位置管控",設置顏色為紅色} else {return "rgba(255, 255, 255, 0.16)";// 其他標簽設置為灰色}},},},axisLine: {// 設置軸線的樣式lineStyle: {color: "#fff", // 設置軸線顏色為白色},},},

yAxis

官網api可查看具體參數:點擊跳轉至官網查看yAxis
yAxis(縱軸)用于配置直角坐標系中的縱軸屬性,包括坐標軸類型、刻度分隔、標簽樣式等。

type: 指定了縱軸的類型,例如’value’表示數值軸。
name: 設置縱軸的名稱,用于描述縱軸所代表的數據意義。
axisLabel: 定義了縱軸標簽的樣式,包括文字顏色和大小等。
splitLine: 控制分隔線的顯示與樣式,可以設置是否顯示分隔線以及分隔線的樣式。

通過配置 yAxis,可以靈活地控制縱軸的顯示方式、標簽樣式以及分隔線的展示,從而使得圖表能夠清晰地呈現數據,并滿足不同的可視化需求。

yAxis: {type: "value",// 縱軸類型為數值軸,適用于連續的數值數據name: "second",// 設置 y 軸的名稱為"second"splitLine: {show: false,// 是否顯示 y 軸的分隔線,這里設為隱藏},axisLabel: { // 設置 y 軸標簽的樣式textStyle: {color: "#ffffff", // 設置 y 軸字體顏色為 #ffffontSize: 12, // 設置 y 軸字體大小為 14px},},axisLine: {// 設置 y 軸線條的樣式lineStyle: {color: "#ffffff", // 設置 y 軸線條顏色為 #fff},},nameTextStyle: {// 設置 y 軸名稱的樣式color: "#ffffff", // 設置 y 軸名稱顏色為 #fff},},

grid

官網api可查看具體參數:點擊跳轉至官網查看grid
grid(網格)組件用于控制直角坐標系的布局,可以通過 grid 來調整坐標系的位置、大小以及間距等。

left / right / top / bottom: 分別設置 grid 組件距離容器的左、右、上、下邊距的距離,可以是像素值或百分比。
containLabel: 控制 grid 區域是否包含坐標軸的刻度標簽,默認為 false。
backgroundColor: 設置 grid 區域的背景顏色,可以是顏色值或者漸變色。
borderWidth: 設置 grid 區域的邊框線寬。
borderColor: 設置 grid 區域的邊框顏色。

通過配置 grid,可以靈活地調整圖表的布局,使得圖表在頁面中的位置和大小符合需求,并且能夠美觀地展示數據。

grid: {left: "3%",right: "10%",bottom: "10%",},

series

官網api可查看具體api:點擊跳轉至官網查看series
折線圖后面的柱狀陰影重點在與series數組的第三個對象,這里設置了一個單獨柱狀圖(type為bar)的類型,并設置其顏色效果,以達到陰影效果。

series: [{name: "步驟平均時長",data: ydata1,type: "line",symbol: "rect", // 將折線圖的拐點符號設置為方形symbolSize: 10, // 設置方形的大小為8lineStyle: {color: "#ffffff", // 設置第一條線的顏色為 #00baad},itemStyle: {color: "#ffffff", // 設置第一條線的方形顏色為 #ffffff},label: {// 添加對應值顯示show: true,position: "top", // 顯示在拐點上方},z: 2,},{name: "步驟歷史平均時長",data: ydata2,type: "line",symbol: "rect", // 將折線圖的拐點符號設置為方形symbolSize: 10, // 設置方形的大小為8lineStyle: {color: "#00baad", // 設置第一條線的顏色為 #00baad},itemStyle: {color: "#00baad", // 設置第一條線的方形顏色為 #ffffff},label: {// 添加對應值顯示show: true,position: "bottom",color: "#00baad",},z: 2,},{//這里是柱狀陰影的關鍵部分data: bgdata,type: "bar",// 柱狀圖類型barWidth: 68,// 柱寬度// itemStyle: {//   color: "rgba(0,0,0,0.16)",// },itemStyle: {normal: {color: function (params) {var aValue = ydata1[params.dataIndex];var bValue = ydata2[params.dataIndex];if (Math.abs(aValue - bValue) > threshold) {//若差值大于最大差值,則設置其字體顏色為紅色return "rgba(102, 77, 107,0.6)";} else {return "rgba(0,0,0,0.16)";}},},},},],

源碼

      var xdata = ["第1步 步驟名稱","第2步 步驟名稱","第3步 步驟名稱","第4步 步驟名稱","第5步 步驟名稱","第6步 步驟名稱","第7步 步驟名稱","第8步 步驟名稱","第9步 步驟名稱","第10步 步驟名稱","第11步 步驟名稱","第12步 步驟名稱","第13步 步驟名稱","第14步 步驟名稱","第15步 步驟名稱","第16步 步驟名稱","第17步 步驟名稱","第18步 步驟名稱","第19步 步驟名稱","第20步 步驟名稱","第21步 步驟名稱","第22步 步驟名稱","第23步 步驟名稱","第24步 步驟名稱",];var ydata1 = [21,20,34,31,22,18,18,18,18,18,18,21,15,34,31,22,18,18,18,18,18,18,18,18,];var ydata2 = [18,16,25,30,15,18,18,18,18,18,18,18,16,25,30,15,18,18,18,18,18,18,18,18,];var bgdata = [40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,];var threshold = 7;var average = 140,historyAveraged = 5.6,averageCount = 2.5;option = {backgroundColor: "#375a84",dataZoom: [{type: "slider", // 設置為滑動條show: true, // 顯示滑動條start: 0, // 滑動條起始位置end: 100 / (12 - 10) - 1, // 滑動條結束位置bottom: 10, // 滑動條距離底部的距離textStyle: {color: "#fff",},backgroundColor: "#acb7c3", // 設置背景顏色handleStyle: {color: "#2a82e4", // 設置左右兩邊的可滑動收縮豎線顏色},},],legend: {legend: {data: ["步驟平均時長", "步驟歷史平均時長"],},orient: "vertical", // 設置圖例垂直排列right: 10, // 調整圖例距離右側的距離top: "top", // 設置圖例位于上方itemWidth: 10, // 設置寬度itemHeight: 10, // 設置高度textStyle: {color: "#fff",},},title: {// 添加title屬性text:"總平均時長" +average +"s\n\n步驟總數" +averageCount +"\n\n步驟平均耗時" +historyAveraged +"s", // 自定義的文字內容orient: "vertical", // 設置圖例垂直排列right: 10, // 調整圖例距離右側的距離top: 80, // 設置圖例位于上方itemWidth: 10, // 設置寬度itemHeight: 10, // 設置高度textStyle: {color: "#fff",fontSize: 12,},},xAxis: {type: "category",data: xdata,axisLabel: {formatter: function (value) {return value.split(" ").join("\n"); // 使用換行符拆分字符串并重新連接},textStyle: {fontSize: 12, // 設置 x 軸字體大小為 12pxcolor: function (params) {if (params == "第3步 位置管控") {return "rgba(190, 53, 59, 1)";} else {return "rgba(255, 255, 255, 0.16)";}},},},axisLine: {lineStyle: {color: "#fff", // 設置 x 軸線條顏色為 #fff},},},yAxis: {type: "value",name: "second",splitLine: {show: false, // 隱藏y軸的橫向線條},axisLabel: {textStyle: {color: "#ffffff", // 設置 y 軸字體顏色為 #ffffontSize: 12, // 設置 y 軸字體大小為 14px},},axisLine: {lineStyle: {color: "#ffffff", // 設置 y 軸線條顏色為 #fff},},nameTextStyle: {color: "#ffffff", // 設置 y 軸名稱顏色為 #fff},},grid: {left: "3%",right: "10%",bottom: "10%",},series: [{name: "步驟平均時長",data: ydata1,type: "line",symbol: "rect", // 將折線圖的拐點符號設置為方形symbolSize: 10, // 設置方形的大小為8lineStyle: {color: "#ffffff", // 設置第一條線的顏色為 #00baad},itemStyle: {color: "#ffffff", // 設置第一條線的方形顏色為 #ffffff},label: {// 添加對應值顯示show: true,position: "top", // 顯示在拐點上方},z: 2,},{name: "步驟歷史平均時長",data: ydata2,type: "line",symbol: "rect", // 將折線圖的拐點符號設置為方形symbolSize: 10, // 設置方形的大小為8lineStyle: {color: "#00baad", // 設置第一條線的顏色為 #00baad},itemStyle: {color: "#00baad", // 設置第一條線的方形顏色為 #ffffff},label: {// 添加對應值顯示show: true,position: "bottom",color: "#00baad",},z: 2,},{data: bgdata,type: "bar",barWidth: 68,// itemStyle: {//   color: "rgba(0,0,0,0.16)",// },itemStyle: {normal: {color: function (params) {var aValue = ydata1[params.dataIndex];var bValue = ydata2[params.dataIndex];if (Math.abs(aValue - bValue) > threshold) {return "rgba(102, 77, 107,0.6)";} else {return "rgba(0,0,0,0.16)";}},},},},],};

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

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

相關文章

貓耳語音下載(mediadown)

貓耳語音下載(mediadown) 一、介紹 貓耳語音下載,能夠幫助你下載貓耳音頻節目。如果你是會員,它還能幫你下載會員節目。 二、下載地址 下載:貓耳語音下載(mediadown) 百度網盤下載:貓耳語音下載(mediadown) 三、安裝教程 將下載的文件解壓到D:\xibinhui,D:\Pr…

Unity RectTransform·屏幕坐標轉換

RectTransform轉屏幕坐標 分兩種情況 Canvas渲染模式為Overlay時,使用此方式 public Rect GetScreenCoordinatesOfCorners(RectTransform rt) {var worldCorners new Vector3[4];rt.GetWorldCorners(worldCorners);var result new Rect(worldCorners[0].x,world…

Manomotion 實現AR手勢互動-解決手勢無效的問題

之前就玩過 Manomotion ,現在有新需求,重新接入發現不能用了,不管什么辦法,都識別不了手勢,我記得當初是直接調用就可以的。 經過研究發現,新版本SDK改了寫法。下邊就寫一下新版本的調用,并且實…

好書推薦 《Excel函數與公式應用大全for Excel 365 Excel 2021》

一.基本介紹 1.什么是 Excel? Excel 是微軟公司開發的一款電子表格軟件,是 Microsoft Office 套件的一部分。它被廣泛用于數據處理、分析、可視化和管理等方面。Excel 提供了豐富的功能,使用戶能夠創建、編輯、存儲和分享各種類型的數據表格。 2.Exc…

Golang Channel 詳細原理和使用技巧

1.簡介 Channel(一般簡寫為 chan) 管道提供了一種機制:它在兩個并發執行的協程之間進行同步,并通過傳遞與該管道元素類型相符的值來進行通信,它是Golang在語言層面提供的goroutine間的通信方式.通過Channel在不同的 goroutine中交換數據,在goroutine之間…

代碼隨想錄Day66 | 圖的DFS與BFS

代碼隨想錄Day66 | 圖的DFS與BFS DFS797.所有可能的路徑無向圖和有向圖的處理 BFS200.島嶼數量 DFS 文檔講解:代碼隨想錄 視頻講解: 狀態 本質上就是回溯算法。 void dfs(參數) {if (終止條件) {存放結果;return;}for (選擇:本節點所連接的…

『運維備忘錄』之 Shell 內置命令大集合

前言 在 Shell 中,有許多內置命令可用于執行各種任務,包括文件操作、進程管理、環境變量設置等。本文將詳細介紹一些常見的Shell內置命令及其示例用法。 命令描述alias創建命令別名,用于將命令或命令組合關聯到用戶自定義名稱bg將作業放入后…

Qt textBrowser的Html相關

Qt textBrowser的Html相關 Qt textBrowser的Html相關 Qt textBrowser的Html相關 一開始就想要一個簡單的功能,點一下按鈕,添加的文字居中顯示,再點一下按鈕,添加的文字變更顏色居右顯示。 但是: ui->textEdit-&g…

WordPress免費的遠程圖片本地化下載插件nicen-localize-image

nicen-localize-image(可在wordpress插件市場搜索下載),是一款用于本地化文章外部圖片的插件,支持如下功能: 文章發布前通過編輯器插件本地化 文章手動發布時自動本地化 文章定時發布時自動本地化 針對已發布的文章…

python類的屬性、方法、靜態方法、靜態方法類內部的調用、直接調用與實例化調用

設計者:ISDF工軟未來 版本:v1.0 日期:2024/3/4 class Restaurant:餐館類def __init__(self,restaurant_name,cuisine_type):#類的屬性self.restaurant_name restaurant_nameself.cuisine_type cuisine_type# self.stregth_level 0def desc…

基于機器學習的密碼強度檢測

項目簡介 利用機器學習對提供的數據集預測用戶輸入的密碼是否為弱密碼。 原始數據集只包含關于弱密碼的信息,并沒有包含強密碼的數據或分類器,這意味著模型無法學習到強密碼的規律!!! 我之所以這樣設計這個示例,其目的是為了向你展示模型的…

python65-Python的循環之for表達式

for表達式用于利用其他區間、元組、列表等可迭代對象創建新的列表。for 表達式的語法格式如下: [表達式 for 循環計數器 in 可迭代對象] 從上面的語法格式可以看出,for表達式與普通for循環的區別 1)在for關鍵字之前定義一個表達式,該表達式通常會包含循環計數器 2)for …

@RestController和@Controller的區別

RestController和Controller是Spring框架中兩個常用的注解,用于標識Controller類 1.Controller:使用Controller注解標記的類是一個典型的MVC控制器(controller),用于處理請求并返回視圖。通常在該類的方法上使用Reque…

alzet供應商你值得擁有

在20世紀70年代,ALZE公司研發出來一款巧妙的藥物輸送裝置——Alzet osmotic pump。這款產品如膠囊般精致小巧,它既有膠囊的外表,也具有膠囊的作用。在Alzet osmotic pump中藏有可以裝配藥物溶液的空間。此款膠囊泵如同一個小投遞員&#xff0…

Vue整合three.js 環境從頭搭建 詳細教程

目錄 一、創建Vue項目 二、搭建three.js 三、引入擴展庫OrbitControls 首先我們要有nodejs環境,這里我們用的是17.1.0版本。 一、創建Vue項目 第一步:終端命令創建vue項目 npm create vite@latest

AI蠕蟲病毒威脅升級,揭示AI安全新危機

一組研究人員成功研發出首個能夠通過電子郵件客戶端竊取數據、傳播惡意軟件以及向他人發送垃圾郵件的AI蠕蟲,并在使用流行的大規模語言模型(LLMs)的測試環境中展示了其按設計功能運作的能力。基于他們的研究成果,研究人員向生成式…

用pyinstaller打包python代碼為exe可執行文件并在其他電腦運行的方法

本文介紹基于Python語言中的pyinstaller模塊,將寫好的.py格式的Python代碼及其所用到的所有第三方庫打包,生成.exe格式的可執行文件,從而方便地在其他環境、其他電腦中直接執行這一可執行文件的方法。 有時,我們希望將自己電腦上的…

python筆記:super(),__getitem()__,__call()__

目錄 Q1:super(NetworkBlock, self).__init__()什么意思 Q2:__call__() 類的實例圓括號自動調用 Q3:__getitem__() 類的實例 方括號自動調用 Q4:沒有雙下劃線方法時,普通的調用類的方法 總結 Q1:super…

Python 全棧系列230 輕全局函數服務 GFGoLite

說明 為了將GlobalFunc推向正常的應用軌道,構造一個功能簡單的服務。 內容 1 工作模式 Server模式:以API服務方式執行 Worker模式: 以Worker方式執行。通過left/right文件夾和rsync方式執行任務并寫結果。 2 構造方法 重載和執行;從標…

基于springboot的助農管理系統的設計與實現

** 🍅點贊收藏關注 → 私信領取本源代碼、數據庫🍅 本人在Java畢業設計領域有多年的經驗,陸續會更新更多優質的Java實戰項目希望你能有所收獲,少走一些彎路。🍅關注我不迷路🍅** 一 、設計說明 1.1研究背…