要为AMCharts的堆叠柱状图中的每个类别指定颜色方案,可以使用AMCharts的categoryAxis对象的labelColorField属性来实现。下面是一个代码示例:
// 创建图表实例
let chart = am4core.create("chartdiv", am4charts.XYChart);
// 设置数据
chart.data = [{
category: "类别1",
value1: 10,
value2: 12,
value3: 8
}, {
category: "类别2",
value1: 5,
value2: 8,
value3: 6
}, {
category: "类别3",
value1: 3,
value2: 4,
value3: 2
}];
// 创建类别轴
let categoryAxis = chart.xAxes.push(new am4charts.CategoryAxis());
categoryAxis.dataFields.category = "category";
categoryAxis.renderer.grid.template.location = 0;
// 创建值轴
let valueAxis = chart.yAxes.push(new am4charts.ValueAxis());
// 创建堆叠柱状图系列
let series1 = chart.series.push(new am4charts.ColumnSeries());
series1.dataFields.valueY = "value1";
series1.dataFields.categoryX = "category";
series1.name = "值1";
let series2 = chart.series.push(new am4charts.ColumnSeries());
series2.dataFields.valueY = "value2";
series2.dataFields.categoryX = "category";
series2.name = "值2";
let series3 = chart.series.push(new am4charts.ColumnSeries());
series3.dataFields.valueY = "value3";
series3.dataFields.categoryX = "category";
series3.name = "值3";
// 设置颜色方案
let colors = ["#FF0000", "#00FF00", "#0000FF"]; // 自定义颜色方案
categoryAxis.renderer.labels.template.propertyFields.fill = "color";
categoryAxis.renderer.labels.template.adapter.add("fill", function(fill, target) {
let index = categoryAxis.dataItems.indexOf(target.dataItem);
return am4core.color(colors[index]);
});
上面的代码示例中,我们首先创建了一个堆叠柱状图,并设置了数据和类别轴。然后,我们创建了三个堆叠柱状图系列,并为它们分别设置了值字段和类别字段。最后,我们使用categoryAxis.renderer.labels.template.adapter来根据自定义的颜色方案为每个类别的标签指定颜色。
请注意,categoryAxis.renderer.labels.template.adapter使用categoryAxis.dataItems.indexOf(target.dataItem)来获取每个类别的索引,然后将索引与颜色方案中的颜色对应起来。