是的,您可以使用amCharts 4对堆叠柱状图的类别进行排序。以下是一个示例代码,演示如何按总数对类别进行排序:
// 创建一个堆叠柱状图的实例
var chart = am4core.create("chartdiv", am4charts.XYChart);
// 向图表添加数据
chart.data = [{
category: "类别1",
value1: 10,
value2: 15,
value3: 20
}, {
category: "类别2",
value1: 5,
value2: 8,
value3: 12
}, {
category: "类别3",
value1: 20,
value2: 10,
value3: 5
}];
// 创建堆叠柱状图的类别轴
var categoryAxis = chart.xAxes.push(new am4charts.CategoryAxis());
categoryAxis.dataFields.category = "category";
categoryAxis.renderer.grid.template.location = 0;
// 创建堆叠柱状图的值轴
var valueAxis = chart.yAxes.push(new am4charts.ValueAxis());
valueAxis.min = 0;
valueAxis.renderer.minWidth = 35;
// 创建堆叠柱状图的系列
var series1 = chart.series.push(new am4charts.ColumnSeries());
series1.dataFields.categoryX = "category";
series1.dataFields.valueY = "value1";
series1.name = "值1";
var series2 = chart.series.push(new am4charts.ColumnSeries());
series2.dataFields.categoryX = "category";
series2.dataFields.valueY = "value2";
series2.name = "值2";
var series3 = chart.series.push(new am4charts.ColumnSeries());
series3.dataFields.categoryX = "category";
series3.dataFields.valueY = "value3";
series3.name = "值3";
// 修改堆叠柱状图的类别排序
chart.events.on("beforedatavalidated", function(ev) {
chart.data.sort(function(a, b) {
var sumA = a.value1 + a.value2 + a.value3;
var sumB = b.value1 + b.value2 + b.value3;
return sumB - sumA;
});
});
// 更新图表
chart.validateData();
在上面的示例中,我们使用chart.events.on("beforedatavalidated")事件,将chart.data数组按照每个类别的总数排序。在此之后,我们调用chart.validateData()方法更新图表,以显示排序后的类别。
请注意,该代码假设您已经正确加载了amCharts 4库,并在HTML中创建了一个具有id“chartdiv”的容器元素。您可能需要根据自己的需求进行调整和修改。