echarts 多个堆叠柱状图 在顶部显示总数、合计、自定义合计值

1、效果图

在这里插入图片描述

2、代码实现

import * as echarts from 'echarts';

var chartDom = document.getElementById('main');
var myChart = echarts.init(chartDom);
var option;

let xAxisData = ['X'];
let data1 = [192.35];
let data2 = [1.09];
let data3 = [43.75];
let data4 = [45.09];
let data5 = [109.9];
let data6 = [11.66];
let data7 = [173.79];
let data8 = [283.37];
var emphasisStyle = {
  itemStyle: {
    shadowBlur: 10,
    shadowColor: 'rgba(0,0,0,0.3)'
  }
};
option = {
  legend: {
    data: ['A', 'B', 'C', 'D', 'E', 'F'],
    top: '50%',
    right: 0,
    width: 10
  },
  tooltip: {},
  xAxis: {
    data: xAxisData,
    axisLine: {
      onZero: true,
      lineStyle: {
        color: '#D5D5D5'
      }
    },
    axisTick: { show: false },
    splitLine: { show: false },
    splitArea: { show: false }
  },
  yAxis: {
    show: false
  },
  grid: {
    bottom: 100
  },
  color: [
    'rgb(56,160,255)',
    'rgb(52,204,203)',
    'rgb(150,94,227)',
    'rgb(248,212,54)',
    '',
    'rgb(64,149,229)',
    'rgb(147,210,243)',
    '#fff'
  ],
  series: [
    {
      name: 'A',
      type: 'bar',
      barWidth: 100,
      stack: 'one',
      label: {
        show: true,
        color: '#fff'
      },
      emphasis: emphasisStyle,
      data: data1
    },
    {
      name: 'B',
      type: 'bar',
      stack: 'one',
      label: {
        show: true,
        color: '#fff'
      },
      emphasis: emphasisStyle,
      data: data2
    },
    {
      name: 'C',
      type: 'bar',
      stack: 'one',
      label: {
        show: true,
        color: '#fff'
      },
      emphasis: emphasisStyle,
      data: data3
    },
    {
      name: 'D',
      type: 'bar',
      stack: 'one',
      label: {
        show: true,
        color: '#fff'
      },
      emphasis: emphasisStyle,
      data: data4
    },
    {
      name: '合计1',
      type: 'bar',
      stack: 'one',
      label: {
        show: true,
        color: '#333',
        position: 'top',
        formatter: function (params) {
          return '合计1' + data8[0];
        }
      },
      emphasis: emphasisStyle,
      data: [0]
    },
    {
      name: 'E',
      type: 'bar',
      barWidth: 100,
      barGap: '50%',
      stack: 'two',
      label: {
        show: true,
        color: '#fff'
      },
      emphasis: emphasisStyle,
      data: data5
    },
    {
      name: 'F',
      type: 'bar',
      stack: 'two',
      label: {
        show: true,
        color: '#fff'
      },
      emphasis: emphasisStyle,
      data: data6
    },
    {
      name: 'G',
      type: 'bar',
      stack: 'two',
      label: {
        show: true,
        color: '#333'
      },
      itemStyle: {
        borderColor: 'rgb(147,210,243)',
        borderType: 'dashed'
      },
      emphasis: emphasisStyle,
      data: data7
    },
    {
      name: '合计2',
      type: 'bar',
      stack: 'two',
      label: {
        show: true,
        color: '#333',
        position: 'top',
        formatter: function (params) {
          return '合计2' + data7[0];
        }
      },
      emphasis: emphasisStyle,
      data: [0]
    }
  ]
};

option && myChart.setOption(option);

3、重点

(1) 在series中添加一条数据(一个对象),用来标识合计,其中data数组的值都为0
(2) 在该对象中,label属性的formatter返回自己需要展示的合计值

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); ``` 这样,就可以实现多个堆叠柱状图的简写了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值