您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“如何使用vue實(shí)現(xiàn)柱形圖”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
使用vue實(shí)現(xiàn)柱形圖的方法:1、創(chuàng)建div屬性為“<div ref="BarChart" style="height: 1000px; width: 100%"/>”;2、通過“mounted(){this.fetchData()window.addEventListener('resize',()=>{if (this.chart){...}”實(shí)現(xiàn)立體柱狀圖即可。
vue 實(shí)現(xiàn)立體柱狀圖
樣式如下圖所示:
可以將立體柱狀圖看做由yData+底+頂構(gòu)成,對(duì)應(yīng)代碼如下:
<template>
<div ref="BarChart" style="height: 1000px; width: 100%"/></template>
<script>import echarts from 'echarts'export default {
data() {
return {
chart: null,
data: [], //數(shù)據(jù)
xData: [], //x軸
yBarData: [], //y軸
yLable: [],
colorStops: [],
chartLegend: [], //圖例
colorOptions: [ //圖例以及柱形圖顏色選擇
'#5ba2e4',
'#f58510',
'#afa5a5',
'#facb3d',
'#0854cf',
'#48c611',
'#082b63'
]
}
},
mounted() {
this.fetchData()
//圖的大小自適應(yīng)
window.addEventListener('resize',()=>{
if (this.chart){
this.chart.resize()
}
})
},
beforeDestroy() { //實(shí)例銷毀之前調(diào)用
if (!this.chart) {
return
}
this.chart.dispose()
this.chart = null
},
methods: {
fetchData() {
this.xData = ["黑龍江",'遼寧','貴州','福建','湖北','河南','河北','山西','山東','天津','吉林','北京','內(nèi)蒙古','云南']
this.yLable = ['10','20','30','40','50','60','70','80','90','100','110','120','130','140']
this.chartLegend = []
const dateArr = []
this.yLable.forEach((item, index) => {
if (item !== null && item !== undefined) {
dateArr.push(this.yLable[index])
}
})
this.chartLegend = dateArr this.initData()
this.initChart()
},
initData() {
this.yBarData = this.yLable },
initChart() {
this.chart = echarts.init(this.$refs.BarChart)
this.chart.clear() // 清空當(dāng)前實(shí)例
let colors = []
const dom = 800
const barWidth = dom / 20
for (let i = 0; i < 4; i++) {
colors.push({
colorStops: [
{
offset: 0,
color: '#73fcff' // 最左邊
}, {
offset: 0.5,
color: '#86eef1' // 左邊的右邊 顏色
}, {
offset: 0.5,
color: '#5ad6d9' // 右邊的左邊 顏色
}, {
offset: 1,
color: '#3dc8ca'
}]
})
}
this.chart.setOption({
backgroundColor: '#010d3a',
//提示框
tooltip: {
trigger: 'axis',
formatter: " : {c}",
axisPointer: { // 坐標(biāo)軸指示器,坐標(biāo)軸觸發(fā)有效
type: 'shadow' // 默認(rèn)為直線,可選為:'line' | 'shadow'
}
},
/**區(qū)域位置*/
grid: {
left: '10%',
right: '10%',
top: '10%',
bottom: '10%',
},
//X軸
xAxis: [{
data: this.xData,
type: 'category',
show: true,
axisLine: {
show: false,
lineStyle: {
color: 'rgba(255,255,255,1)',
shadowColor: 'rgba(255,255,255,1)',
// shadowOffsetX: '20'
},
symbol: ['none', 'arrow'],
symbolOffset: [0, 25]
},
splitLine: {
show: false
},
axisTick: {
show: false
},
axisLabel: {
margin: 20,
fontSize: 10
}
}],
yAxis: {
show: true,
splitNumber: 4,
axisLine: {
show: false
},
splitLine: {
show: true,
lineStyle: {
type: 'dashed',
color: '#075858'
},
},
axisLabel: {
show: true,
color: '#FFFFFF',
margin: 30,
fontSize: 15
}
},
series: [
{//數(shù)據(jù)顏色
name: '日付費(fèi)用戶數(shù)',
type: 'bar',
barWidth: barWidth,
itemStyle: {
normal: {
color: (params) => {
return colors[params.dataIndex % 4];
}
}
},
label: {
show: true,
position: [barWidth / 2, -(barWidth + 20)],
color: '#ffffff',
fontSize: 14,
fontStyle: 'bold',
align: 'center'
},
data: this.yBarData },
{//底
z: 2,
type: 'pictorialBar',
data: this.yBarData,
symbol: 'diamond',
symbolOffset: [0, '50%'],
symbolSize: [barWidth, barWidth * 0.5],
itemStyle: {
normal: {
color: (params) => {
return colors[params.dataIndex % 4]
}
}
}
},
{//頂
z: 3,
type: 'pictorialBar',
symbolPosition: 'end',
data: this.yBarData,
symbol: 'diamond',
symbolOffset: [0, '-50%'],
symbolSize: [barWidth, barWidth * 0.5],
itemStyle: {
normal: {
borderWidth: 0,
color: (params) => {
return colors[params.dataIndex % 4].colorStops[0].color;
}
}
}
}
]
}, true)
}
}}</script>
上述js代碼中,有如下注意事項(xiàng):
顏色選擇:可以將colors[params.dataIndex % 4]
替換為this.colorOptions[params.dataIndex % 4]
,即使用代碼中定義的colorOptions進(jìn)行顏色填充
colorStops保證了立體的效果
代碼中colors[params.dataIndex % 4]
中的4的選取是可變的,保證索引值在colors變量的長度范圍內(nèi)。例如:本例中colors長度為4,params.dataIndex % 4
不超過4即可
引用上述barchart可應(yīng)用如下代碼:
<template>
<bar-chart /></template>
<script>import barChart from "./components/barChart"export default {
name: 'barchart',
components: { barChart }}</script>
“如何使用vue實(shí)現(xiàn)柱形圖”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。