ECharts多组堆叠柱状图顶部显示总和与自定义Tooltip实现

作者:键盘侠时间:2026-10-30 21:51:12浏览:663

本文介绍如何在ECharts中实现多个堆叠柱状图顶部显示总和。通过保留barGap默认值,利用最后一个系列的label formatter方法直接修改显示文本,避免使用重叠柱子的复杂技巧。同时提供自定义tooltip配置,支持根据系列名称动态隐藏特定数据项,确保悬浮提示准确且符合业务需求。

效果图

左侧柱状图顶部显示所有堆叠数据的总和,右侧柱状图顶部同样显示所有堆叠数据的总和。

效果图

方法思路

许多教程推荐使用 barGap 设置为 '-100%' 使两个系列的柱子重叠,从而在顶部显示总数。然而,这种方法仅适用于单个X轴只有一个堆叠柱状图的场景。本例需求是一个X轴项下包含两组堆叠柱状图,上述方法不适用。其核心思路是单独生成一个数据系列并移动位置以实现重叠显示。既然该思路不适用,我们转换思路:直接修改显示的 label 文本即可实现目标,随即进行实践验证。

首先顶部显示数字

{
        name: lastAdStack.name,
        type: "bar",
        stack: "Ad",
        label: {
          normal: {
            show: true,// 显示label
            position: "top", // 显示的label的位置
          }
        },
        data: [],//数据
      }

启用 label 显示后,只需调整 label 的显示逻辑即可。

修改label的显示

label 提供了 formatter 方法用于处理显示文本。只需在堆叠柱状图的最后一个数据系列中应用此方法,即可修改其 label 显示内容。注意,data 数组中的数据保持不变,这样不会影响柱状图的高度显示,仅改变 label 的文字内容。

{
        name: lastAdStack.name,
        type: "bar",
        stack: "Ad",
        label: {
          normal: {
            show: true,
            position: "top",
        // 首先把所有项的总和都算出来按照固定的顺序方法zonghe这个数组中  
          然后在方法中用下标对应上总和方法 return出来就可以改变他的label现实文字
            formatter: function (params) {
              var index = params.dataIndex;
              return zonghe[index]
            },      
          }


        },

        data: [],
      }

基本实现完成。第二个柱状图的处理方式相同,只要确保放入 zonghe 数组中的数据与显示数据能够一一对应,数值计算就不会出错,鼠标悬浮时显示的 tooltip 数据也会保持正确。

如果希望在鼠标悬浮时 tooltip 中不显示某一项数据,

需要在 echarts 的 option 配置项中设置 tooltip。

tooltip: {
          trigger: "axis",
          axisPointer: {
            type: "shadow",
          },
          formatter: (params) => {
            var res = params[0].name
            for (var i = 0; i < params.length; i++) {
              if (this.adStackArr[params[i].seriesIndex].name != null) {  
            // 这行代码就是判断语句 具体情况 具体分析  自己打印params 来实现自己的判断
                res += `<div >
                  <span style="display:inline-block;margin-right:5px;border-radius:50%;width:10px;height:10px;background-color:${[
                    params[i].color,
                  ]};"></span>
                  ${params[i].seriesName}
                  ${params[i].data}
                </div>`;
              }
            }
            return res; //最后返回的数据得一个字符串 并且支持html css 显示我用的都是行内式样式 拼接成一个字符串 给最后显示 数遍悬浮的样式也是在这里设置 你的字符串是什么样式  渲染出来就是什么样的
          }
        },

至此,功能实现完毕。

以上为 ECharts 实现多个柱状堆叠图顶部显示总数的详细示例,更多关于 echarts 柱状堆叠图顶部显示总数的资料,请关注本站其他相关文章!

作者最新文章