Highchartsv7.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
trueに設定されています
yAxis.opposite
falseに設定されています
注:v7.2.0でのみテスト済み
古いソリューション(v3 +)
現在のところ、唯一の解決策はオフセットパラメータを使用することです。ただし、Highcharts 3.0以降では、そのプロパティを自由に制御し、軸を更新できます。
chart.yAxis[index].update( options );
ここで、optionsは、オフセットを含むyAxisのオプションを持つオブジェクトです。ピクセル位置を取得するには、内部関数を使用できますchart.xAxis[index].translate(value)
(少しハッキーですが、機能します)。したがって、両方を組み合わせる場合は、例を参照してください:http: //jsfiddle.net/UGpPV/6/