ECharts多组堆叠柱状图顶部显示总和与自定义Tooltip实现
本文介绍如何在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 柱状堆叠图顶部显示总数的资料,请关注本站其他相关文章!
免登录快速分享代码:适合面试协作的轻量级JS在线运行工具推荐
2026-11-05 14:45:59
JS空字符串和纯空格转浮点数的结果是什么
2026-11-05 11:04:42
JS在线格式化缩进混乱怎么办?配置项调整技巧
2026-11-04 23:27:25
JS怎么获取秒级时间戳
2026-11-03 21:45:29
JS时间戳怎么从毫秒转换为秒
2026-11-03 20:04:14
