echarts 同时显示柱状图+折线图 (提示框显示百分号%和千分位分隔符)

本文介绍了如何使用 ECharts 在同一图表中同时展示柱状图和折线图,并展示了如何自定义提示框组件,使得柱状图的值显示为千分位分隔格式,而折线图的值显示为百分比形式。通过提供的 `totalFormat` 函数和 `getEchartsOpt` 函数,可以实现图表的动态格式化。示例中,'总量' 和 '占比' 是两个独立的数据系列,显示在不同的 Y 轴上。
摘要由CSDN通过智能技术生成

echarts同时显示柱状图 + 折线图

提示框组件(tooltip)柱状图value显示千分位分隔符 折线图显示value + ‘%’

option配置如下:
(总量和占比之间没关系!我拿到的数据是后端直接给的,这里就是随便写的数据记录一下!)

function totalFormat(params) {
  const str = params.toString();
  const reg = str.indexOf('.') > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g;
  return str.replace(reg, '$1,');
}

export const getEchartsOpt = () => {
  const echartsOpt = {
    title: {
      text: '一个title',
      x: 'center',
    },
    legend: {
      data: ['总量', '占比'],
      right: '10%',
    },
    tooltip: {
      trigger: 'axis',
      axisPointer: {
        type: 'cross',
        label: {
          backgroundColor: '#6a7985',
        },
      },
      formatter: (params) => {
        let result = `${params[0].name}<br>`;
        params.forEach((item) => {
          if (item.value) {
            if (item.seriesName === '占比') {
              result += `${item.marker} ${item.seriesName} : ${item.value} %</br>`;
            } else {
              result += `${item.marker} ${item.seriesName} : ${totalFormat(item.value)}</br>`;
            }
          } else {
            result += `${item.marker} ${item.seriesName} :  - </br>`;
          }
        });
        return result;
      },

    },
    grid: {
      left: '3%',
      right: '4%',
      bottom: '4%',
      containLabel: true,
    },
    xAxis: [
      {
        type: 'category',
        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
      },
    ],
    yAxis: [
      {
        type: 'value',
        name: '总量',
      },
      {
        type: 'value',
        name: '占比',
        alignTicks: true,
        axisLabel: {
          formatter: '{value} %',
        },
      },
    ],
    series: [
      {
        name: '总量',
        type: 'bar',
        barWidth: '50%',
        data: [4324234,4563214,9012834,2739002,3901233,5319834,3783344],
      },
      {
        name: '占比',
        type: 'line',
        yAxisIndex: 1,
        data: [40,45,90,35,40,50,35],
      },
    ],
  };
  return echartsOpt;
};

效果如下:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值