基于vue+echarts實(shí)現(xiàn)柱狀圖漸變色效果(每個(gè)柱子顏色不同)
一、需要實(shí)現(xiàn)的效果圖

二、背景
Echarts的柱狀圖,由于默認(rèn)所有柱子都是同一個(gè)顏色,且顏色為純色系,顯示效果不能滿足我們的設(shè)計(jì)稿要求,遂需要進(jìn)行改造。
本文介紹如何為每個(gè)柱子添加不同的顏色,以及如何添加漸變色,以豐富圖表的顯示效果。
除了顏色的問題,同時(shí)存在以下幾個(gè)小問題會(huì)一同解決:
- 多數(shù)值柱狀圖;
- 帶圓角的柱狀圖;
三、解決思路
這是一個(gè)集多數(shù)值的柱狀圖、每個(gè)柱子的顏色不同,且每個(gè)柱子都有自己的漸變色、帶圓角的柱狀圖于一體的柱狀圖,就需要考慮代碼的整潔性和復(fù)用性。
由于柱子的寬度和y軸坐標(biāo)值一樣,只是每個(gè)柱子的值、顏色、名稱不同,可以考慮將每個(gè)柱子的設(shè)置對(duì)象寫成公共方法,經(jīng)過傳值完成。
四、為每個(gè)柱子設(shè)置不同顏色,以及漸變色的設(shè)置
這個(gè)是在series中進(jìn)行設(shè)置的,series是個(gè)數(shù)組,我們有四個(gè)柱子表示四種數(shù)據(jù),每個(gè)柱子對(duì)應(yīng)數(shù)組中的一個(gè)對(duì)象,即series數(shù)組中包含了四個(gè)對(duì)象:

series: [
getBarSeriesData('telNoAnsweredCount'),
getBarSeriesData('emptyCount'),
getBarSeriesData('timeoutCount'),
getBarSeriesData('joinEmptyCount')
]
備注:為了提高代碼的可讀性和可拓展性,減少冗余代碼,此處將數(shù)組中的對(duì)象提取成一個(gè)公共方法,根據(jù)參數(shù)不同,顯示不同數(shù)據(jù)。
- 首先將每個(gè)柱子的配置對(duì)象寫成公共方法:
下圖是該公共方法的代碼內(nèi)容截圖,主要是將漸變色的色值(color)、柱子名稱(name)和數(shù)據(jù)(data)寫成變量:

附上代碼如下:
function getBarSeriesData(target: keyof typeof propDict): SeriesOption {
return {
name: propDict[target].name,
data: incomingCallTrendData.data.data[target],
tooltip: {
trigger: 'axis'
},
type: 'bar',
barWidth: '6', // 柱子寬度可自定義
roundCap: true,
itemStyle: {
borderRadius: [5, 5, 0, 0], // 帶圓角的柱子設(shè)置
color: {
type: 'linear',
x: 0,
y: 0,
x2: 0,
y2: 0.95,
colorStops: [
{
offset: 0,
color: propDict[target].colorStart, // 0% 處的顏色
},
{
offset: 1,
color: propDict[target].colorStop, // 100% 處的顏色
},
],
global: false, // 缺省為 false
},
}
}
}
- 將漸變色的顏色、柱子名稱(
name)進(jìn)行自定義:

const propDict = {
telNoAnsweredCount: {
name: '客戶呼入隊(duì)列未接通數(shù)',
index: 0,
color: 'rgba(227, 103, 61, 1)',
colorStart: 'rgba(227, 103, 61, 1)',
colorStop: 'rgba(252, 70, 107, 1)'
},
emptyCount: {
name: '排隊(duì)無可用坐席溢出數(shù)',
index: 1,
color: 'rgba(239, 217, 171, 1)',
colorStart: 'rgba(239, 217, 171, 1)',
colorStop: 'rgba(221, 145, 123, 1)'
},
timeoutCount: {
name: '排隊(duì)超時(shí)溢出數(shù)',
index: 2,
color: 'rgba(2, 164, 255, 1)',
colorStart: 'rgba(2, 164, 255, 1)',
colorStop: 'rgba(5, 125, 210, 1)'
},
joinEmptyCount: {
name: '進(jìn)隊(duì)列前無座席溢出數(shù)',
index: 3,
color: 'rgba(19, 251, 157, 1)',
colorStart: 'rgba(250, 112, 170, 1)',
colorStop: 'rgba(102, 27, 221, 1)'
}
}
- 最后,在
series中進(jìn)行調(diào)用即可。這樣不僅柱子是漸變色,而且每個(gè)圖例也會(huì)自動(dòng)變成漸變色。
在series數(shù)組中的四個(gè)對(duì)象,就解決了多數(shù)值柱子的問題。相信看的仔細(xì)的同學(xué)也發(fā)現(xiàn)了柱子帶圓角的設(shè)置位置(borderRadius: [5, 5, 0, 0], // 帶圓角的柱子設(shè)置)。
五、總結(jié)
到此這篇關(guān)于基于vue+echarts實(shí)現(xiàn)柱狀圖漸變色效果(每個(gè)柱子顏色不同)的文章就介紹到這了,更多相關(guān)vue+echarts柱狀圖漸變色內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
uni-app無限級(jí)樹形組件簡(jiǎn)單實(shí)現(xiàn)代碼
文章介紹了如何在uni-app中簡(jiǎn)單封裝一個(gè)無限級(jí)樹形組件,該組件可以無線嵌套,展開和收縮,并獲取子節(jié)點(diǎn)數(shù)據(jù),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2025-01-01
el-radio-group中的area-hidden報(bào)錯(cuò)的問題解決
本文主要介紹了el-radio-group中的area-hidden報(bào)錯(cuò)的問題解決,下面就來介紹幾種解決方法,具有一定的參考價(jià)值,感興趣的可以了解一下2025-04-04
Vue2.0實(shí)現(xiàn)自適應(yīng)分辨率
這篇文章主要為大家詳細(xì)介紹了Vue2.0實(shí)現(xiàn)自適應(yīng)分辨率,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11
vue3項(xiàng)目中配置sass,vite報(bào)錯(cuò)Undefined mixin問題
這篇文章主要介紹了vue3項(xiàng)目中配置sass,vite報(bào)錯(cuò)Undefined mixin問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
vue+Element實(shí)現(xiàn)搜索關(guān)鍵字高亮功能
這篇文章主要為大家詳細(xì)介紹了vue+Element實(shí)現(xiàn)搜索關(guān)鍵字高亮功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05
Vuex(多組件數(shù)據(jù)共享的Vue插件)搭建與使用
Vuex是實(shí)現(xiàn)組件全局狀態(tài)(數(shù)據(jù))管理的一種機(jī)制,可以方便的實(shí)現(xiàn)組件之間數(shù)據(jù)的共享,數(shù)據(jù)緩存等等,下面這篇文章主要給大家介紹了關(guān)于Vuex(多組件數(shù)據(jù)共享的Vue插件)搭建與使用的相關(guān)資料,需要的朋友可以參考下2022-10-10
vue結(jié)合el-upload實(shí)現(xiàn)騰訊云視頻上傳功能
這篇文章主要介紹了vue結(jié)合el-upload實(shí)現(xiàn)騰訊云視頻上傳功能,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
Vue首頁界面加載優(yōu)化實(shí)現(xiàn)方法詳解
如果你也遇到在 vue 應(yīng)用中,首頁加載資源過多,導(dǎo)致加載緩慢的問題,下面的方法也許能幫到你,主要的處理思想是:讓首頁多余的資源能在需要它的時(shí)候再加載2022-09-09
Vue.js實(shí)現(xiàn)一個(gè)自定義分頁組件vue-paginaiton
這篇文章主要為大家詳細(xì)介紹了Vue.js實(shí)現(xiàn)一個(gè)自定義分頁組件vue-paginaiton的具體代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09

