繁体   English   中英

Highcharts在具有多个系列的图表之间共享工具提示,并且共享工具提示

[英]Highcharts shared tooltip between charts with multiple series and shared tooltip

我正在尝试设置图表之间的共享工具提示。 仅当工具提示未shared: true时才有效shared: true ,如果我设置了shared: true ,则会出现错误:

TypeError: 'undefined' is not an object (evaluating 'a[0].category') highcharts.js:3259

我准备了示例: http : //jsfiddle.net/CAKQH/24408/

如果将光标移到第一张图表上-很好用,也可以在注释shared: true可以,但是如果将光标移到第二张图表上,则会出现错误。

有人遇到这个错误了吗? 请帮我解决。

发生此问题的原因是您shared: true在一张图表上为shared: true ,而在另一图表上为默认(false)。 这是一个问题,因为tooltip.refresh方法将采用不同的路径,并根据共享设置为true或false的图表使用不同的输入。

您可以在源代码的 8806行中找到有关tooltip.refresh方法的tooltip.refresh

// shared tooltip, array is sent over
if (shared && !(point.series && point.series.noSharedTooltip)) {
    ....
}
// single point tooltip
else {
    ....
}

您可以通过在syncTooltip方法内进行分支来处理这种情况( 例如JFiddle )来解决此问题:

function syncTooltip(container, p) {
    var i = 0;
    for (; i < charts.length; i++) {
        if (container.id != charts[i].container.id) {
            if(charts[i].tooltip.shared) {
                charts[i].tooltip.refresh([charts[i].series[0].data[p]]);
            }
            else {
                charts[i].tooltip.refresh(charts[i].series[0].data[p]);
            }
        }
    }
}

这样,您可以在两个图表上自由地将shared设置为true或false。

不幸的是,您的plotOptions.series.point.events.mouseOver -event不能捕获通过shared: true功能“选择”的点,因此您将不得不找到一个替代事件来正确捕获这种情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM