echarts双柱_echarts 柱状堆叠双X轴的概括实现

该博客详细介绍了如何使用ECharts实现带有堆叠效果的双柱状图,并且展示了如何配置双X轴,包括设置图表名称、数据源、图例、坐标轴等关键参数。通过示例代码,解释了如何处理和展示不同类别数据的堆叠比例。
摘要由CSDN通过智能技术生成

export default {

// 父组件传递过来的数据 (两种方式声明:1.数组 2.对象)

props: {

titleText: {

type:String,

default: () => {

return ''

}

}, // 图表名称

isPercentage: {

type:Boolean

}, // 是否是%

// 原来的数组传入

inSeriesData: {

type:Array,

default: () => {

return [

[20, 20, 0, 0, 20, 0, 20, 20, 20, 20],

[20, 20, 20, 0, 20, 20, 20, 20, 20, 20],

[10, 10, 10, 50, 0, 30, 20, 20, 20, 20],

[10, 10, 10, 50, 40, 30, 20, 20, 20, 20],

[10, 20, 30, 0, 30, 0, 20, 20, 20, 20],

[30, 20, 30, 0, 0, 20, 20, 20, 20, 20]

]

}

}, // 原来的数组传入

legendData: {

type:Array,

default: () => {

return ['I类', 'II类', 'III类', 'IV类', 'V类', '劣V类']// 图表图标数据

}

}, // 原来的数组传入

xAxisDataI: {

type:Array,

default: () => {

return [

[1, 2, 0, 0, 2, 0, 2, 2, 2, 2],

[1, 2, 2, 0, 2, 2, 2, 2, 2, 2],

[1, 1, 1, 5, 0, 3, 2, 2, 2, 2],

[1, 1, 1, 5, 3, 3, 2, 2, 2, 2],

[1, 1, 1, 0, 4, 0, 2, 2, 2, 2],

[1, 2, 3, 0, 0, 2, 2, 2, 2, 2],

[1, 2, 3, 0, 0, 0, 2, 2, 2, 2]

]

}

},

xAxisDataII: {

type:Array,

default: () => {

return ['白龙江', '黑河水', '黄河干流', '嘉陵江', '石羊河']

}

},

yAxisMax: {

type: [Number, String],

default: () => {

return '100'

}

}

},

// 数据

data() {

return {

options: {},

series: [],

xAxisData: []

}

},

// 要用到哪些子组件

components: {},

// 计算属性

computed: {},

// 监听

watch: {},

// 生命周期钩子:实例初始化之后,数据观测(data observer) 和 event/watcher 事件配置之前被调用

created() {

this.setSeries()

},

// 生命周期钩子:组件实例渲染完成时调用

mounted() {

},

// 函数集,

methods: {

setOption() {

let xAxisData = []

let series = []

this.xAxisData = []

this.xAxisDataII.forEach(item => {

xAxisData.push({

value: item,

textStyle: {

fontSize:18,

lineHeight:70

}

})

})

this.legendData.forEach((item, index) => {

series.push(

{

name: item,

type:'bar',

stack:'one',

barMaxWidth:'36.66%',

label: {

show:true,

formatter: (params) => {

let value =this.xAxisDataI[params.seriesIndex][params.dataIndex]

if (Number(value) &&Number(value) !==0) {

return value

}

return ''

},

textStyle: {

color:'#474747'

},

position:'inside'

},

data:this.inSeriesData[index]

}

)

})

let num =Math.ceil(this.inSeriesData[0].length /2)

// eslint-disable-next-line no-unused-vars

for (let i =0; i < num; i++) {

let list = ['当期', '同期']

this.xAxisData.push(...list)

}

this.options = {

title: {

text:this.titleText

},

color:this.$config.chartsColor,

tooltip: {

trigger:'axis',

axisPointer: {

type:'cross'

}

},

grid: [

{

top:100,

bottom:101

},

{

height:60,

bottom:40

}

],

toolbox: {

feature: {

dataView: {show:true, readOnly:false },

restore: {show:true },

saveAsImage: {show:true }

}

},

legend: {

data:this.legendData

},

xAxis: [

{

type:'category',

data:this.xAxisData

}, {

type:'category',

data: xAxisData,

position:'bottom',

axisTick: {

length:50

},

splitArea: {

show:true,

areaStyle: {

/* color: ['rgba(255,255,255,0.5)', 'rgba(200,200,200,0.5)'] */

}

}

}

],

yAxis: [

{

type:'value',

name:'',

min:0,

max:this.yAxisMax,

position:'left',

axisLine: {

lineStyle: {

// color: this.$config.color[0]

}

},

axisLabel: {

formatter:this.isPercentage ?'{value} %' :'{value}'

}

}

],

series: series

}

},

setSeries() {

this.setOption()

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值