Итак, мне наконец-то удалось это сделать, используя значения Axis.toValue () и Axis.toPixels ():
https://api.highcharts.com/class-reference/Highcharts.Axis
Чтобы мое решение работало, у вас должен быть способчтобы получить общее значение столбца с накоплением.Может быть способ сделать это, используя только объект Highcharts, но мне не нравится слишком много возиться с внутренностями Highcharts из соображений совместимости.
Вот как может выглядеть метод позиционера:
function positioner(labelWidth, labelHeight, point)
{
// Default position, assuming mChart is the Highcharts object
var chartY = point.plotY + mChart.plotTop;
var chartX = point.plotX + mChart.plotLeft;
// Move chartY above the stacked column, assuming getTotalColumnValue() exists
var category = Math.round(mChart.xAxis[0].toValue(point.plotX, true));
if(category in mChart.xAxis[0]['categories'])
chartY = mChart.yAxis[0].toPixels(getTotalColumnValue(category), false);
// Move tooltip above the point, centered horizontally
return {
x: chartX - labelWidth / 2,
y: chartY - labelHeight - 10,
};
}