堆叠柱状图显示具体数据和百分比

堆叠柱状图tooltip同时显示具体数据和百分比,这里要先将数据处理成[{value:123,num:456},{value:123,num:456}]这样的格式。(num可以是随便什么名字)

// 计算百分比
  const setDataValue = (dataOne: any, dataTwo: any) => {
    const res: any = [];
    Object.keys(dataOne).forEach((item) => {
      const total: number | any = Object.values(dataOne).reduce(
        (pre: number, ele: any) => {
          return pre + ele;
        },
        0,
      );
      const totalT: number | any = dataTwo
        ? Object.values(dataTwo).reduce((pre: number, ele: any) => {
            return pre + ele;
          }, 0)
        : 0;
      const tempO = ((dataOne[item] / total) * 100).toFixed(2);
      const tempT = ((dataTwo[item] / totalT) * 100).toFixed(2);
      // 保证所有数据加起来不超过100
      const temp = [
        {
          value: Math.floor(tempO * 100) / 100,
          num: dataOne[item],
        },
        {
          value: Math.floor(dataT * 100) / 100,
          num: dataTwo[item],
        },
      ];

      res.push(temp);
    });
    return res;
  }

这个函数只适用于对象类型的数据,数组类型的需要稍加更改(因为数组计算百分比更简单我就不写了)

formatter: function (params: any) {
          // 使用模版字符串加map,页面会出现逗号,在map的末尾加上.join('')就不会有逗号了
          const toolData = params
            .map(function (item: any) {
              // 这句是为了防止传入的数据为undefined或者不是字符串
              // 将数据处理成每隔3位加一个逗号的格式
              const num = item.data.num
                ? item.data.num.toString().replace(/(?=(\B)(\d{3})+$)/g, ',')
                : 0;
              // 这句是为了防止传入的数据为undefined
              const value = item.data.value ? item.data.value : 0;
              return `<div style="display: flex;">
                        <div style="flex: 1;
                                    margin-bottom: 5px;
                                    text-align: left;">
                          <div style="background-color: ${item.color};
                                      width: 8px;
                                      height: 8px;
                                      border-radius: 50%;
                                      display: inline-block;
                                      font-size: 14px;
                                      vertical-align: middle;"></div>
                          <div style="display: inline-block;
                                      font-size: 14px;
                                      vertical-align: middle;
                                      margin-left: 8px;">${item.seriesName}</div>
                        </div>
                        <div style="width: 50px;
                                    text-align: right;">${value}%</div>
                        <div style="flex: 1;
                                    margin-bottom: 5px;
                                    text-align: right;">${num}人</div>
                      </div>`;
            })
            .join('');
          return `<div style="width: 280px;
                              padding: 0 10px;
                              font-family: PingFangSC-Regular;
                              font-size: 14px;
                              color: #2E2E2E;">
                    <div style="margin-bottom: 13px;">${params[0].name}</div>${toolData}</div>`;
        },

也可以使用模版引擎(但是要注意框架是否支持,且在这个模版字符串中只能使用行内样式,我试过其他方式都没有作用,希望能有大佬帮忙解惑)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PowerBI系列课程之内置视觉对象和常用自定义视觉对象专题 内置视觉对象Stacked bar chart  堆积条形Stacked column chart 堆积柱形 - X轴按类别显示Clustered bar chart  簇条形Clustered column chart  簇柱形100% Stacked bar chart 百分比堆积条形100% Stacked column chart 百分比堆积柱形Line Chart  折线-预测功能Area Chart  面积Stacked Area Chart  堆积面积Line and stacked column chart 折线和堆积柱形-双Y轴Line and clustered column chart 折线和簇柱形Ribbon Chart  丝带Waterfall Chart  瀑布Funnel  漏斗Scatter chart  散点Pie Chart  饼 Donut Chart 环形TreeMap 树Map  地 Filled Map 着色地Shape Map 形Gauge 仪表Card 卡片Multi-row card 多行卡片KPI  Table 表格-条件样式Matrix 矩阵详解  Key influencers  关键影响者Decomposition tree 分解树Q&A 问答2021.6月增加分页表格视觉对象自定义视觉对象视觉对象使用建议下载排名前20,免费实用的视觉对象 AllDemo pbix介绍 Pareto 帕累托DrillDown Donut  可钻取饼Word Cloud   文字云Gantt  甘特Infographic Designer  信息柱Timeline Slicer  时间轴切片器Chiclet Slicer 片切片器Text Filter 文本筛选器HierarchySlicer  层级切片器Pulse Chart脉动Power KPI Matrix  KPI矩阵Animated Bar Chart Race 动态条形Advance Card  高级卡片Sankey Chart  桑基Radar Chart   雷达Dial Gauge  码表Waffle 华夫占比Quadrant 象限 Tornado Chart  龙卷风Histogram Chart  直方 Box and Whisker chart 盒线Sunburst  阳光Chord Chart 和弦Bullet Chart  子弹HTML Content  html解析视觉对象  

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值