如何获取Highcharts次Y轴包含刻度与标签的总宽度
Highcharts 次Y轴含刻度、标签总宽度获取方案
正确实现方法
直接读取轴实例下labelGroup元素的渲染后尺寸即可,该分组天生包含所有轴刻度、标签元素,计算结果不受标签换行、样式调整影响,准确率最高:
- 第一步:获取次Y轴实例,双轴场景下次Y轴对应索引为1:
const secondaryYAxis = chart.yAxis[1] - 第二步:调用SVG元素的
getBBox()方法获取真实渲染宽度:const totalWidth = secondaryYAxis.labelGroup.getBBox().width - 注意:该调用需要放在图表渲染完成的回调中执行(如
chart.events.load、chart.events.redraw),避免元素未完成渲染得到无效值。
示例代码如下:
Highcharts.chart('container', { chart: { events: { load: function () { // 输出次Y轴包含刻度、标签的总宽度 console.log(this.yAxis[1].labelGroup.getBBox().width); } } }, // 其余图表配置省略 })
原有计算方式偏差原因
通过right、plotSizeX属性组合计算的方法,无法覆盖标签内边距、刻度线宽度、换行后标签扩展宽度等细节维度,因此会出现随标签布局变化的偏差,不推荐使用。
yAxis width属性返回值说明
你观察到的现象符合官方设计预期:yAxis.width为水平放置的Y轴专属配置项,常规垂直方向的Y轴不存在该配置的适配逻辑,读取时返回图表总宽度属于未定义场景的默认返回值,不是程序bug。
内容的提问来源于stack exchange,提问作者h11
相关产品推荐
相关产品推荐

