如何在amCharts 4中设置DateAxis的X轴总像素/列数为36?
实现AmCharts DateAxis固定36列的方案
要让DateAxis对应36个等宽列,核心是把目标时间范围平均分成36份,通过设置时间间隔和网格参数实现,具体步骤如下:
明确完整时间范围:
你当前只设置了max为23:59,需要补充min为00:00,确保时间范围是完整的24小时,这样才能准确计算分段。计算并设置时间间隔:
24小时总时长为86400000毫秒,分成36份的话,每份间隔是86400000 / 36 = 2400000毫秒,也就是40分钟。通过baseInterval设置这个间隔,让轴自动生成36个分段。强制网格数量:
配置renderer.grid.template.count为36,确保视觉上渲染出36列网格。
修改后的完整代码:
let dateAxis = chart.xAxes.push(new am4charts.DateAxis()); dateAxis.renderer.labels.template.disabled = true; dateAxis.strictMinMax = true; // 设置完整的24小时时间范围 dateAxis.min = moment("00:00", "HH:mm").toDate().getTime(); dateAxis.max = moment("23:59", "HH:mm").toDate().getTime(); // 设置每段间隔为40分钟,24小时正好分成36份 dateAxis.baseInterval = { timeUnit: "minute", count: 40 }; // 强制网格数量为36,确保列数符合要求 dateAxis.renderer.grid.template.count = 36;
如果你的时间范围不是24小时,只需要调整min/max,然后按「总时长毫秒数 / 36」计算出对应时间间隔,再匹配timeUnit和count即可。
内容的提问来源于stack exchange,提问作者Helmi
相关产品推荐
相关产品推荐

