echarts多组堆叠柱状图

一、效果图

二、代码实现

1、创建容器

 <el-card class="box-card">
      <div slot="header" class="clearfix">
           <span>课堂学习</span>
      </div>
      <div id="class-learning" style="height: 360px"></div>
 </el-card>

2、初始化实例

 created () {
        this.$nextTick(()=>{
            this.initCharts()
        });
    },
 getAnalysisData(result){
            let hasData = result != null && JSON.stringify(result) != '{}';
            this.initCharts(hasData);
        },
 initCharts(hasData){
            this.chartInstances.forEach(chart =>{
                if(chart != null & chart != '' && chart != undefined){
                    chart.dispose();
                }
            })
            this.chartInstances = [
                echarts.init(document.getElementById('class-learning')).setOption(this.learningOption),
            ]
        }

3、设置柱状图样式和内容

 learningOption : {
                title: {
                    text: '课堂学习各指标人数分布',
                    left: '49%',
                    textAlign: 'center',
                },
                // legend的data内容与series中的数据name名称要保持一致 图例的名称和颜色才会显示
                legend: {
                    data: ["专注听讲", "认真思考","积极参与","内容掌握度"],
                    bottom: "20px",
                },
                xAxis: {
                    type: 'category',
                    data: ['语文', '数学', '英语']
                },
                yAxis: {
                    type:'value',
                    // axisLabel: {
                    //     show: true,// 显示x轴标签
                    //     formatter: `{value}%`,
                    //     interval: 0
                    // },
                    // axisTick:{
                    //     show: true //不显示坐标轴刻度线
                    // },
                    axisLine: {
                        show: true, //显示坐标轴线
                    },
                    splitLine: {     //网格线
                        "show": false
                        },
                    // y轴刻度标签设置 对value整除得到list数组的下标 再显示到y轴标签上
                    axisLabel: {
                        formatter: (value) => {
                            const list = ['差', '较差', '','较好','', '好']
                                return list[value/20]
                        }
                    },
                },
                series: [
                    //堆叠柱状图 堆叠在同一个柱子上要设置一样的stack值(可以是数字可以是字符可以是汉字)
                {
                    name: '专注听讲差',
                    type: 'bar',
                    stack: '1',
                    // 鼠标停留时高亮显示 其余内容虚化
                    emphasis: {
                        focus: 'series'
                    },
                    // 柱状图的说明标签显示 标签颜色为黑色 单位为%
                    label: {
                        show: true,
                        color:'black',
                        formatter: '{c}%',//单位
                    },
                    // 柱子带边框
                    itemStyle: {
                        normal: {
                            borderColor:'#fff',
                            borderWidth: 1,
                        }
                    },
                    data: [8,33,12]
                },
                {
                    name: '专注听讲',
                    type: 'bar',
                    stack: '1',
                    emphasis: {
                        focus: 'series'
                    },
                    label: {
                        show: true,
                        color:'black',
                        formatter: '{c}%', //单位
                    },
                    itemStyle: {
                        normal: {
                            borderColor:'#fff',
                            borderWidth: 1,
                        }
                    },
                    data: [32,20,32]
                },
                {
                    name: '专注听讲较好',
                    type: 'bar',
                    stack: '1',
                    emphasis: {
                        focus: 'series'
                    },
                    label: {
                        show: true,
                        color:'black',
                        formatter: '{c}%', //单位
                    },
                    itemStyle: {
                        normal: {
                            borderColor:'#fff',
                            borderWidth: 1,
                        }
                    },
                    data: [41,26,51]
                },
                {
                    name: '专注听讲好',
                    type: 'bar',
                    stack: '1',
                    emphasis: {
                        focus: 'series'
                    },
                    label: {
                        show: true,
                        color:'black',
                        formatter: '{c}%', //单位
                    },
                    itemStyle: {
                        normal: {
                            borderColor:'#fff',
                            borderWidth: 1,
                        }
                    },
                    data: [19,21,5]
                },
                // stack值不同 则是另外一个柱子
                {
                    name: '认真思考差',
                    type: 'bar',
                    stack: '2',
                    emphasis: {
                        focus: 'series'
                    },
                    label: {
                        show: true,
                        color:'black',
                        formatter: '{c}%' //单位
                    },
                    itemStyle: {
                        normal: {
                            borderColor:'#fff',
                            borderWidth: 1,
                        }
                    },
                    data: [15,17,8]
                },
                {
                    name: '认真思考',
                    type: 'bar',
                    stack: '2',
                    emphasis: {
                        focus: 'series'
                    },
                    label: {
                        show: true,
                        color:'black',
                        formatter: '{c}%' //单位
                    },
                    itemStyle: {
                        normal: {
                            borderColor:'#fff',
                            borderWidth: 1,
                        }
                    },
                    data: [28,45,26]
                },
                {
                    name: '认真思考较好',
                    type: 'bar',
                    stack: '2',
                    emphasis: {
                        focus: 'series'
                    },
                    label: {
                        show: true,
                        color:'black',
                        formatter: '{c}%' //单位
                    },
                    itemStyle: {
                        normal: {
                            borderColor:'#fff',
                            borderWidth: 1,
                        }
                    },
                    data: [34,24,28]
                },
                {
                    name: '认真思考好',
                    type: 'bar',
                    stack: '2',
                    emphasis: {
                        focus: 'series'
                    },
                    label: {
                        show: true,
                        color:'black',
                        formatter: '{c}%' //单位
                    },
                    itemStyle: {
                        normal: {
                            borderColor:'#fff',
                            borderWidth: 1,
                        }
                    },
                    data: [23,14,38]
                },
                {
                    name: '积极参与差',
                    type: 'bar',
                    stack: '3',
                    emphasis: {
                        focus: 'series'
                    },
                    label: {
                        show: true,
                        color:'black',
                        formatter: '{c}%' //单位
                    },
                    itemStyle: {
                        normal: {
                            borderColor:'#fff',
                            borderWidth: 1,
                        }
                    },
                    data: [22,9,5]
                },
                {
                    name: '积极参与',
                    type: 'bar',
                    stack: '3',
                    emphasis: {
                        focus: 'series'
                    },
                    label: {
                        show: true,
                        color:'black',
                        formatter: '{c}%' //单位
                    },
                    itemStyle: {
                        normal: {
                            borderColor:'#fff',
                            borderWidth: 1,
                        }
                    },
                    data: [25,40,46]
                },
                {
                    name: '积极参与较好',
                    type: 'bar',
                    stack: '3',
                    // barGap: 10,
                    emphasis: {
                        focus: 'series'
                    },
                    label: {
                        show: true,
                        color:'black',
                        formatter: '{c}%' //单位
                    },
                    itemStyle: {
                        normal: {
                            borderColor:'#fff',
                            borderWidth: 1,
                        }
                    },
                    data: [48,34,35]
                },
                {
                    name: '积极参与好',
                    type: 'bar',
                    stack: '3',
                    emphasis: {
                        focus: 'series'
                    },
                    label: {
                        show: true,
                        color:'black',
                        formatter: '{c}%' //单位
                    },
                    itemStyle: {
                        normal: {
                            borderColor:'#fff',
                            borderWidth: 1,
                        }
                    },
                    data: [5,17,14]
                },
                {
                    name: '内容掌握度差',
                    type: 'bar',
                    stack: '4',
                    emphasis: {
                        focus: 'series'
                    },
                    label: {
                        show: true,
                        color:'black',
                        formatter: '{c}%' //单位
                    },
                    itemStyle: {
                        normal: {
                            borderColor:'#fff',
                            borderWidth: 1,
                        }
                    },
                    data: [9,22,25]
                },
                {
                    name: '内容掌握度',
                    type: 'bar',
                    stack: '4',
                    emphasis: {
                        focus: 'series'
                    },
                    label: {
                        show: true,
                        color:'black',
                        formatter: '{c}%' //单位
                    },
                    itemStyle: {
                        normal: {
                            borderColor:'#fff',
                            borderWidth: 1,
                        }
                    },
                    data: [41,26,25]
                },
                {
                    name: '内容掌握度较好',
                    type: 'bar',
                    stack: '4',
                    emphasis: {
                        focus: 'series'
                    },
                    label: {
                        show: true,
                        color:'black',
                        formatter: '{c}%' //单位
                    },
                    itemStyle: {
                        normal: {
                            borderColor:'#fff',
                            borderWidth: 1,
                        }
                    },
                    data: [48,42,35]
                },
                {
                    name: '内容掌握度好',
                    type: 'bar',
                    stack: '4',
                    emphasis: {
                        focus: 'series'
                    },
                    label: {
                        show: true,
                        color:'black',
                        formatter: '{c}%' //单位
                    },
                    itemStyle: {
                        normal: {
                            borderColor:'#fff',
                            borderWidth: 1,
                        }
                    },
                    data: [2,10,15]
                }
                ],
                color:['#335899','#3f6ab7','#7991ce','#b3bedf','#a0460d','#ed7d31','#f4b183','#f8cbad',
                '#bf9000','#ffc000','#ffd966','#ffe699','#548235','#70ad47','#a9d18e','#c5e0b4']
            },

Echarts中,可以使用堆叠(stack)属性来实现多个堆叠柱状图的简写。具体步骤如下: 1. 首先,引入Echarts库和相关的样式文件。 2. 创建一个容器元素,用于显示图表。 3. 定义一个配置项对象,包含图表的基本设置和数据。 4. 在配置项对象中,使用series属性来定义多个堆叠柱状图。 5. 在每个堆叠柱状图的series属性中,设置type为'bar',表示柱状图类型。 6. 在每个堆叠柱状图的series属性中,设置stack属性为相同的值,表示这些柱状图要进行堆叠。 7. 在每个堆叠柱状图的series属性中,设置data属性为对应的数据。 8. 最后,使用echarts.init方法初始化图表,并使用setOption方法将配置项应用到图表中。 以下是一个简单的示例代码: ```javascript // 引入Echarts库和相关的样式文件 <script src="echarts.min.js"></script> // 创建一个容器元素,用于显示图表 <div id="chart"></div> // 定义一个配置项对象,包含图表的基本设置和数据 var option = { // 设置图表的标题、坐标轴等属性 title: { text: '堆叠柱状图示例' }, xAxis: { data: ['A', 'B', 'C', 'D', 'E'] }, yAxis: {}, series: [ // 第一个堆叠柱状图 { name: '图例1', type: 'bar', stack: '堆叠', data: [100, 200, 300, 400, 500] }, // 第二个堆叠柱状图 { name: '图例2', type: 'bar', stack: '堆叠', data: [200, 300, 400, 500, 600] }, // 第三个堆叠柱状图 { name: '图例3', type: 'bar', stack: '堆叠', data: [300, 400, 500, 600, 700] } ] }; // 初始化图表并应用配置项 var chart = echarts.init(document.getElementById('chart')); chart.setOption(option); ``` 这样,就可以实现多个堆叠柱状图的简写了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值