echarts 正负值柱状图同侧显示及数值正确显示详解
本文将详细讲解如何在 ECharts 中将正负值柱状图显示在同一侧,并确保数值正确显示。下图展示了最终效果:
实现这一目标需要对数据和图表配置进行调整:
一、数据预处理:
为了让正负值柱状图在同一侧显示,我们需要将负值转换为其绝对值。假设你的原始数据为 data1 和 data4,可以使用 Math.abs() 函数进行转换:
var displayData1 = data1.map(v => Math.abs(v)); var displayData4 = data4.map(v => Math.abs(v));
二、图表配置:
- 辅助系列: 引入一个辅助系列来绘制透明的柱状图,用于占位,从而使正负值柱状图显示在同一侧。将辅助系列的 itemStyle 配置为透明:
{ name: '辅助', type: 'bar', stack: '总量', // 确保与其他系列堆叠 itemStyle: { borderColor: 'transparent', color: 'transparent' }, emphasis: { itemStyle: { borderColor: 'transparent', color: 'transparent' } }, data: displayData1, // 使用处理后的绝对值数据 // ...其他配置 }
- 其他系列 (收入、支出、其他): 调整其他系列的 label 配置,使用 formatter 函数显示正确的正负值:
label: { show: true, position: 'bottom', // 或 'top',根据需要调整 formatter: function (params) { // 假设 params.value 为柱状图的值,data2 为对应的数据数组 return data2[params.dataIndex] >= 0 ? ('+' + params.value) : ('-' + params.value); } }
- Y 轴: 将 y 轴的 inverse 属性设置为 true,使正值在底部显示:
yAxis: { type: 'value', inverse: true }
通过以上步骤,即可在 ECharts 中实现正负值柱状图同侧显示,并准确显示柱状图上的数值。 请确保你的数据结构和代码与示例相符,并根据你的实际数据调整 data1, data2, data4 等变量名。