echarts如何實(shí)現(xiàn)帶百分比的橫向柱狀圖
實(shí)例代碼
var data = [220, 182, 191, 234, 290, 120, 65, 444];
var barWidth = 20;
var maxNum = 0;
for (var i = 0; i < data.length; i++) {
if (data[i] > maxNum) {
maxNum = data[i];
}
}
option = {
backgroundColor: 'black',
grid: {
top: '10%',
left: '20%',
right: '10%',
bottom: '0%',
},
title: {
text: '百分比柱子',
},
xAxis: {
show: false,
},
yAxis: {
data: data.map((item, index) => `data ${index}`),
splitLine: {
show: false,
},
axisLabel: {
textStyle: { fontSize: '80%', color: '#02afff' },
},
axisLine: {
show: false,
},
axisTick: false,
},
series: [
{
type: 'bar',
barWidth: barWidth,
zlevel: 2,
data: data.map(function (item) {
return {
value: item,
maxNum: maxNum,
};
}),
label: {
show: true,
position: 'inside',
// distance: 80,
align: 'center',
formatter: function (params) {
// return params.data.realValue;
var percent = Number((params.data.value / params.data.maxNum) * 100).toFixed(2) + '%';
return percent;
},
color: '#fff',
fontSize: 12,
},
itemStyle: {
borderRadius: 10,
color: new echarts.graphic.LinearGradient(0, 1, 1, 1, [
{ offset: 0, color: '#395CFE' },
{ offset: 1, color: '#2EC7CF' },
]),
},
},
{
type: 'bar',
barWidth: barWidth,
barGap: '-100%',
data: data.map(function (item) {
return {
realValue: item,
value: maxNum,
};
}),
label: {
show: true,
position: 'right',
distance: 80,
align: 'right',
formatter: function (params) {
return params.data.realValue + ' 件';
},
color: '#02afff',
fontSize: 18,
},
itemStyle: {
borderRadius: 10,
color: 'rgba(3,169,244, 0.5)',
},
},
],
};
效果圖

代碼解析
1、在option之前,定義一個(gè)data數(shù)組,然后通過for循環(huán)獲取數(shù)組中的最大值,保存為maxNum變量。
2、在series里定義兩個(gè)bar,第一個(gè)bar的data通過map,設(shè)置value為步驟1里面的data,并且返回一個(gè)對(duì)象類型,對(duì)象包含了value和maxNum兩個(gè)屬性(value是必選屬性,maxNum是一個(gè)自定義屬性,如果有必要,還可以加其他自定義屬性),之所以要加上maxNum這個(gè)屬性,因?yàn)楹竺鎙abel的formatter需要使用value/maxNum來計(jì)算百分比,第一次遇到series里data返回為一個(gè)對(duì)象類型的寫法,漲姿勢(shì)了,對(duì)于獲取數(shù)據(jù)進(jìn)行計(jì)算真是太有用了。
3、series里第二個(gè)bar,也是通過map給data賦值,不同的是這個(gè)bar的value全部都設(shè)置為maxNum,第二個(gè)bar作為背景,相當(dāng)于是100%進(jìn)度。之所以還需要加一個(gè)realValue屬性,因?yàn)樵赽ar的右邊還需要顯示每一項(xiàng)的數(shù)值(220, 182, 191, 234, 290, 120, 65, 444這些)。
4、第一個(gè)bar在上面,第二個(gè)bar在下邊,關(guān)鍵之處在于第一個(gè)bar的zlevel:2,然后第二個(gè)bar的barGap: '-100%'.
多看echarts官網(wǎng)的案例,真的受益匪淺。
總結(jié)
到此這篇關(guān)于echarts如何實(shí)現(xiàn)帶百分比的橫向柱狀圖的文章就介紹到這了,更多相關(guān)echarts百分比橫向柱狀圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JS實(shí)現(xiàn)向表格中動(dòng)態(tài)添加行的方法
這篇文章主要介紹了JS實(shí)現(xiàn)向表格中動(dòng)態(tài)添加行的方法,涉及javascript針對(duì)表格行的動(dòng)態(tài)添加技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03
JS公共小方法之判斷對(duì)象是否為domElement的實(shí)例
下面小編就為大家?guī)硪黄狫S公共小方法之判斷對(duì)象是否為domElement的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-11-11
js+cookies實(shí)現(xiàn)懸浮購物車的方法
這篇文章主要介紹了js+cookies實(shí)現(xiàn)懸浮購物車的方法,涉及javascript數(shù)值計(jì)算與cookie的相關(guān)操作技巧,需要的朋友可以參考下2015-05-05
gulp-uglify 與gulp.watch()配合使用時(shí)報(bào)錯(cuò)(重復(fù)壓縮問題)
gulp是基于Nodejs的自動(dòng)任務(wù)運(yùn)行器,gulp 和 grunt 非常類似,但相比于 grunt 的頻繁 IO 操作,gulp 的流操作,能更快地更便捷地完成構(gòu)建工作。今天在學(xué)習(xí)gulp時(shí)遇到當(dāng)用gulp.watch來監(jiān)聽js文件的變動(dòng)時(shí)出現(xiàn)重復(fù)壓縮問題,下面小編給大家解答下2016-08-08
JavaScript學(xué)習(xí)筆記--常用的互動(dòng)方法
本文對(duì)JavaScript中常用的互動(dòng)方法進(jìn)行實(shí)例分析介紹,圖文并茂,有需要的朋友可以看下2016-12-12
值得分享的Bootstrap Ace模板實(shí)現(xiàn)菜單和Tab頁效果
這篇文章主要為大家分享了基于Bootstrap Ace模板實(shí)現(xiàn)菜單和Tab頁效果,感興趣的小伙伴們可以參考一下2015-12-12
微信小程序自定義tabbar custom-tab-bar 6s出不來解決方案(cover-view不兼容)
這篇文章主要介紹了微信小程序自定義tabbar custom-tab-bar 6s出不來解決方案,cover-view不兼容問題,需要的朋友可以參考下2019-11-11

