Highcharts v7.2+ 解决方案
强制一些选项以防止图表为轴保留空间,然后使用插件:
(function(H) {
H.addEvent(
H.Axis,
'init',
function(e) {
if (H.defined(e.userOptions.matchAxis)) {
H.merge(
true,
e.userOptions, {
labels: {
reserveSpace: false
},
title: {
reserveSpace: false
},
offset: -1,
opposite: this.isXAxis ? true : false
}
);
}
}
);
H.addEvent(
H.Chart,
'render',
function() {
let chart = this;
chart.axes.forEach(function(axis) {
let newOffset,
matchAxis = axis.options.matchAxis,
translate = axis.horiz ? 'translateY' : 'translateX',
newTranslation = {},
offset = axis.options.offset || 0,
crisp = axis.options.lineWidth % 2,
otherAxes = axis.isXAxis ? chart.yAxis : chart.xAxis;
if (H.defined(matchAxis)) {
newOffset = otherAxes[matchAxis.index || 0].toPixels(matchAxis.value || 0, true);
newTranslation[translate] = newOffset + offset + crisp;
if (axis.axisGroup) {
axis.axisGroup.animate(newTranslation);
}
if (axis.labelGroup) {
axis.labelGroup.animate(newTranslation);
}
}
});
}
);
})(Highcharts);
演示:https ://jsfiddle.net/BlackLabel/2k0bw6q3/
插件的API:
x/yAxis.matchAxis.value
- 应从相反轴选取的设置值。默认为 0。
x/yAxis.matchAxis.index
- 当使用多个轴时,设置索引应该使用哪个相反的轴进行计算。默认为 0。
设置例如yAxis.matchAxis = {}
完全没问题:https ://jsfiddle.net/BlackLabel/qwyczoxb/ (因为默认)
强制选项列表(在插件中):
x/yAxis.labels.reserveSpace
假的
x/yAxis.title.reserveSpace
假的
x/yAxis.offset
为负值(例如 -50)
xAxis.opposite
设置为真
yAxis.opposite
设置为假
注意:仅使用v7.2.0测试
旧解决方案 (v3+)
目前唯一的解决方案是使用偏移参数。但是,从 Highcharts 3.0 开始,您可以自由控制该属性和更新轴:
chart.yAxis[index].update( options );
其中 options 是具有 yAxis 选项的对象,包括偏移量。要获取像素位置,您可以使用内部函数chart.xAxis[index].translate(value)
(有点骇人听闻,但有效)。因此,当两者结合时,请参见示例:http: //jsfiddle.net/UGpPV/6/