echarts 堆叠柱状图的归一化 放两组数据进行对比 怎么实现
时间: 2024-09-11 17:17:25 浏览: 101
echarts堆叠柱状图(顶端圆角).rar
ECharts 是一个使用 JavaScript 实现的开源可视化库,它提供了丰富的图表类型以及灵活的配置项来创建各种图表。堆叠柱状图是一种常用的图表类型,它可以将多组数据堆叠在一起,方便对比各组数据在同一类别下的占比情况。
如果你想要在 ECharts 的堆叠柱状图中实现归一化(即显示各数据点的百分比),你可以在每个系列(series)的 `label` 配置中设置 `formatter` 函数来自定义标签的显示内容。在 `formatter` 函数中,你可以使用 `params.value` 来获取当前数据点的值,并使用 `params.seriesName` 来获取系列名。然后通过计算每个系列的总和,得到当前数据点的占比,并将其格式化为百分比的形式显示。
下面是一个简单的示例代码,展示了如何在 ECharts 中实现堆叠柱状图的归一化显示:
```javascript
// 假设已经有了 ECharts 的实例实例对象 chart
var option = {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
legend: {
data: ['系列1', '系列2']
},
xAxis: {
type: 'category',
data: ['类别A', '类别B', '类别C']
},
yAxis: {
type: 'value'
},
series: [
{
name: '系列1',
type: 'bar',
stack: '总量',
label: {
show: true,
formatter: function(params) {
// seriesName 是系列名称,value 是当前系列数据的值
var total = 0;
chart.getOption().series.forEach(function(series) {
if (series.name !== params.seriesName) {
series.data.forEach(function(data) {
total += data.value;
});
}
});
// 计算当前系列的百分比
var ratio = (params.value / total).toFixed(2);
return params.value + ' (' + (ratio * 100) + '%)';
}
},
data: [320, 302, 301]
},
{
name: '系列2',
type: 'bar',
stack: '总量',
label: {
show: true,
formatter: function(params) {
var total = 0;
chart.getOption().series.forEach(function(series) {
if (series.name !== params.seriesName) {
series.data.forEach(function(data) {
total += data.value;
});
}
});
var ratio = (params.value / total).toFixed(2);
return params.value + ' (' + (ratio * 100) + '%)';
}
},
data: [120, 132, 101]
}
]
};
chart.setOption(option);
```
注意:`formatter` 函数中获取的 `params.value` 是当前数据点的原始值,而不是归一化后的值。为了计算百分比,我们还需要对其他系列的值进行求和,计算出总量。然后用当前数据点的值除以总量得到比例,并将其转换为百分比格式。
阅读全文