将共享工具提示放置在堆叠的列上方

时间:2019-04-26 13:18:55

标签: highcharts

使用堆叠式色谱柱时,我希望工具提示位于堆叠式色谱柱上方。现在,工具提示将出现在列的悬停部分上方,如下所示:

我希望工具提示始终显示在堆积的列上方,而不管悬停的部分是这样的:

我了解定位器方法,但是该功能似乎没有收到合适的参数,无法将工具提示放置在堆积的柱子上方。特别是我不知道如何正确获取悬停列的坐标,我得到的只是光标的全局位置。

2 个答案:

答案 0 :(得分:0)

您可以使用tooltip: { shared: true } 参数作为工具提示:

openpyxl

实时演示: http://jsfiddle.net/BlackLabel/us4h659d/

API参考: https://api.highcharts.com/highcharts/tooltip.shared

答案 1 :(得分:0)

所以我最终设法使用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,
    };
}