这个问题的解决方法是使用 amChart 提供的 labelFunction 属性,为每个标签定义一个回调函数。在这个回调函数中,我们可以通过 dataItem 对象获取到对应的柱子实例,从而实现标签与柱子的关联。
例如,我们可以将以下代码添加到 amChart 集群柱状图的配置中:
chart = am4core.create("chartdiv", am4charts.XYChart);
// 设置 labelFunction 属性
chart.dataFields.categoryX = "category";
chart.dataFields.valueY = "value";
chart.series.push(new am4charts.ColumnSeries());
var series = chart.series.getIndex(0);
series.dataFields.valueY = "value";
series.dataFields.categoryX = "category";
series.columns.template.tooltipText = "{categoryX}: [bold]{valueY}[/]";
series.columns.template.fillOpacity = .8;
// 定义 labelFunction 回调函数
series.columns.template.labelFunction = function(label, dataItem) {
// 从 dataItem 中获取柱子对象
var column = dataItem.column;
// 标签文本的小数部分
var decimalPart = (column.dataItem.value / total * 100).toFixed(2) + "%";
// 返回标签文本
return `${column.dataItem.category}: ${column.dataItem.value} (${decimalPart})`;
};
在这个例子中,我们首先设置了 labelFunction 属性,然后在回调函数中获取对应柱子的实例。在计算标签文本时,我们使用了该柱子的 dataItem 对象,其中包含了该柱子所对应的数据。最后,我们将格式化后的标签文本返回,以实现标签与柱子的关联。
上一篇:AmChart仅激活1个子弹