Echarts数据可视化 【帕累托图】

option= {
        tooltip: {
          trigger: 'axis',
          axisPointer: {
            type: 'cross',
            crossStyle: {
              color: '#999'
            }
          }
        },
        toolbox: {
          feature: {
            saveAsImage: { show: true }
          }
        },
        legend: {
          data: ['频次', '累计百分比']
        },
        dataZoom: [
          {
            id: 'dataZoomX',
            type: 'slider',
            XAxisIndex: [0],
            filterMode: 'empty'
          }
        ],
        xAxis: [
          {
            type: 'category',
            data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
            axisPointer: {
              type: 'shadow'
            }
          }
        ],
        yAxis: [
          {
            type: 'value',
            name: '频次',
            axisLabel: {
              formatter: '{value}'
            },
            // 整条y轴
            axisLine:{
              show:true
            },
          },
          {
            type: 'value',
            name: '累计百分比',
            axisLabel: {
              formatter: '{value} %'
            }, // 整条y轴
            axisLine:{
              show:true
            },
          }
        ],
        series: [
          {
            name: '频次',
            type: 'bar',
            tooltip: {
              valueFormatter: function (value) {
                return value;
              }
            },
            data: []
          },
          {
            name: '累计百分比',
            type: 'line',
            yAxisIndex: 1,
            tooltip: {
              valueFormatter: function (value) {
                return value + ' %';
              }
            },
            data: []
          }
        ]
      }
formatFun: (params) => {
        return new Promise((resolve, reject) => {
          let res = params.res
          let option = params.option
          option.xAxis[0].data = res.value.x_axis
          option.series[0].data = res.value.y_axis

          let data = res.value.y_axis
          // 对数据进行排序
          data.sort((a, b) => b - a);
          // 计算总和
          const total = data.reduce((sum, value) => sum + value, 0);
          // 计算累计百分比
          let cumulativePercentage = 0;
          const cumulativePercentages = data.map(value => {
            const percentage = (value / total) * 100;
            cumulativePercentage += percentage;
            return cumulativePercentage.toFixed(2);
          });
          option.series[1].data = cumulativePercentages
          resolve({ option: option })
        })
      }

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值