此问题的解决方法是使用“adjustMinMax”和“step”属性来对齐多个分类轴的网格。以下是代码示例:
// 第一个分类轴 var categoryAxis1 = chart.xAxes.push(new amCharts.CategoryAxis()); categoryAxis1.dataFields.category = "category1"; categoryAxis1.renderer.grid.template.location = 0; categoryAxis1.renderer.minGridDistance = 30; categoryAxis1.renderer.cellStartLocation = 0.2; categoryAxis1.renderer.cellEndLocation = 0.8; categoryAxis1.renderer.grid.template.stroke = am4core.color("#ddd"); categoryAxis1.renderer.grid.template.strokeWidth = 1; categoryAxis1.renderer.grid.template.opacity = 1; categoryAxis1.renderer.labels.template.fill = am4core.color("#000"); categoryAxis1.renderer.labels.template.fontSize = 12; categoryAxis1.renderer.labels.template.fontWeight = 600;
// 第二个分类轴 var categoryAxis2 = chart.xAxes.push(new amCharts.CategoryAxis()); categoryAxis2.dataFields.category = "category2"; categoryAxis2.renderer.grid.template.location = 0; categoryAxis2.renderer.minGridDistance = 30; categoryAxis2.renderer.cellStartLocation = 0.2; categoryAxis2.renderer.cellEndLocation = 0.8; categoryAxis2.renderer.grid.template.stroke = am4core.color("#ddd"); categoryAxis2.renderer.grid.template.strokeWidth = 1; categoryAxis2.renderer.grid.template.opacity = 1; categoryAxis2.renderer.labels.template.fill = am4core.color("#000"); categoryAxis2.renderer.labels.template.fontSize = 12; categoryAxis2.renderer.labels.template.fontWeight = 600;
// 系列 var series = chart.series.push(new amCharts.ColumnSeries()); series.dataFields.valueY = "value"; series.dataFields.categoryX = "category1"; series.columns.template.stroke = am4core.color("#fff"); series.columns.template.column.cornerRadiusTopLeft = 5; series.columns.template.column.cornerRadiusTopRight = 5; series.columns.template.column.fillOpacity = 0.8; series.columns.template.width = am4core.percent(80); series.columns.template.tooltipText = "{category1}:[bold]{value}[/]";
// 调整分类轴网格 categoryAxis1.renderer.grid.template.adapter.add("location", function(location, target) { if (target.parent == categoryAxis1) { var index = categoryAxis1.categoryItem.index; return location + (-0.5 + index * 0.5) * categoryAxis1.renderer.grid.template.width; } else { return location; } });
categoryAxis1.renderer.minGridDistance = 30;
categoryAxis2.renderer.grid.template.adapter.add("location", function(location, target) { if (target.parent == categoryAxis2) { var index = categoryAxis2.categoryItem.index; return location + (-0.5 + index * 0.5) * categoryAxis2.renderer.grid.template.width; } else { return location; } });
categoryAxis2.renderer.minGridDistance = 30;
// 设置轴的最小和最大值 categoryAxis1.renderer.autoScale = false