在高图中同时显示多个工具提示

库玛兰

我想在Highchart中同时显示多个工具提示。基本要求就像每当鼠标悬停在系列中的某个点上时,我需要显示悬停点半径X内所有点的工具提示。到目前为止,我已经尝试过类似的方法:http : //jsfiddle.net/vmso2dbf/

$(function () {
    $('#container').highcharts({

        title: {
            text: 'Multiple tooltips'
        },
        plotOptions: {
            series: {
                point: {
                    events: {
                        mouseOver: function (event) {
                            var r = 50;
                            var arr = [];
                            var chart = this.series.chart;
                            var currX = this.plotX;
                            var currY = this.plotY;
                            var points = this.series.points;
                            for(var i=0;i<points.length;i++){
                                var xdiff = currX - points[i].plotX;
                                var ydiff = currY - points[i].plotY;
                                var distance = Math.abs(xdiff*xdiff - ydiff*ydiff);
                                if(distance < r*r)
                                    arr.push(points[i]);
                            }
                            chart.tooltip.refresh(arr);
                        }
                    }
                },
            }
        },

        tooltip: {
            enabled: true,
            shared : true
        },

        series: [{
            data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
        }]
    });
});

但是我同时需要多个工具提示,而对于所有相关点而言,我不仅需要一个大型工具提示。如果可能,是否有办法使这些工具提示根据可用空间自动对齐?Highcharts中是否有任何现有的插件/功能可以帮助我解决此问题?

哈尔沃斯·霍尔斯坦

实现此目的的一种方法是克隆工具提示。另外,当您将鼠标悬停在新点上时,您必须跟踪克隆,以正确删除旧工具提示并添加新工具提示。

一个添加到您的代码中的示例是(注释了新代码):

// Array for keeping track of open tooltips
var openTooltips = [];

$('#container').highcharts({
     // Skipping irrelevant options

    plotOptions: {
        series: {
            point: {
                events: {
                    mouseOver: function (event) {
                        var chart = this.series.chart;

                        // Remove any currently open tooltips
                        for(var i = 0; i < openTooltips.length; i++) {      
                            chart.container.firstChild.removeChild(openTooltips[i]);
                        }
                        // Reset array
                        openTooltips = [];

                        var r = 50;
                        var currX = this.plotX;
                        var currY = this.plotY;
                        var points = this.series.points;
                        for(var i=0;i<points.length;i++){
                            var xdiff = currX - points[i].plotX;
                            var ydiff = currY - points[i].plotY;
                            // Changed distance formula to use plus instead of minus
                            var distance = Math.abs(xdiff*xdiff + ydiff*ydiff);
                            if(distance < r*r) {
                                // Open the tooltip for the point
                                chart.tooltip.refresh([points[i]]);
                                // Clone tooltip and add it to array
                                openTooltips.push(this.series.chart.tooltip.label.element.cloneNode(true));
                                // Append tooltip to show it in chart
                                chart.container.firstChild.appendChild(openTooltips[openTooltips.length-1]);
                            }
                        }
                    }
                }
            },
        }
    },

    tooltip: {
        enabled: true,
        shared : true,
        animation: false // Disable animation to get correct tooltip positions
    }
});

如您所见,大多数更改都在克隆工具提示并跟踪它们。请注意,工具提示动画已被禁用,以避免放置错误的工具提示。我也将您的distance公式从差值改为了总和,这与查找欧几里得距离很正常。

请参阅此JSFiddle示例,以了解其外观和工作方式。此答案中的工具提示代码受到Marks答案“保持点击时显示工具提示”的强烈启发

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

同时显示工具提示提示和焦点

来自分类Dev

高图工具提示显示最近的点

来自分类Dev

高图:显示之前的工具提示延迟

来自分类Dev

GoogleCharts API-显示多个工具提示

来自分类Dev

Mapbox在加载时显示多个工具提示

来自分类Dev

Dojo在页面上显示多个工具提示

来自分类Dev

强制所有浏览器工具提示同时显示

来自分类Dev

高图无法正确显示工具提示标题

来自分类Dev

工具提示未显示在高图图表上

来自分类Dev

从javascript的高图中的线/散点图中的某个点获取工具提示内容

来自分类Dev

X轴标签在高图中的柱状图中与工具提示重叠

来自分类Dev

如何在高图中以编程方式切换工具提示?

来自分类Dev

libgdx显示工具提示

来自分类Dev

工具提示未显示

来自分类Dev

工具提示在单个工具提示中包含多个工具提示

来自分类Dev

工具提示在单个工具提示中包含多个工具提示

来自分类Dev

*高图*工具提示格式

来自分类Dev

显示在工具提示图标顶部的工具提示

来自分类Dev

Highcharts-如何在多个系列柱形图中的列顶部对齐共享工具提示?

来自分类Dev

如何使用d3为散点图中的多个点创建工具提示

来自分类Dev

循环浏览引导工具提示元素,同时显示和隐藏它们

来自分类Dev

Chart.js v2:如何使工具提示始终显示在饼图中?

来自分类Dev

如何添加单击事件以在NVD3饼图中显示工具提示?

来自分类Dev

在动态d3堆栈条形图中显示工具提示的问题

来自分类Dev

在d3.js折线图中永久显示工具提示

来自分类Dev

在Spotfire条形图中的工具提示中显示不同的类别名称

来自分类Dev

无法使用 d3.js 在气泡图中显示工具提示

来自分类Dev

当工具提示合并多个系列的数据时,如何以编程方式显示我的图表工具提示?(同步图表)

来自分类Dev

高图在工具提示中显示其他自定义数据

Related 相关文章

  1. 1

    同时显示工具提示提示和焦点

  2. 2

    高图工具提示显示最近的点

  3. 3

    高图:显示之前的工具提示延迟

  4. 4

    GoogleCharts API-显示多个工具提示

  5. 5

    Mapbox在加载时显示多个工具提示

  6. 6

    Dojo在页面上显示多个工具提示

  7. 7

    强制所有浏览器工具提示同时显示

  8. 8

    高图无法正确显示工具提示标题

  9. 9

    工具提示未显示在高图图表上

  10. 10

    从javascript的高图中的线/散点图中的某个点获取工具提示内容

  11. 11

    X轴标签在高图中的柱状图中与工具提示重叠

  12. 12

    如何在高图中以编程方式切换工具提示?

  13. 13

    libgdx显示工具提示

  14. 14

    工具提示未显示

  15. 15

    工具提示在单个工具提示中包含多个工具提示

  16. 16

    工具提示在单个工具提示中包含多个工具提示

  17. 17

    *高图*工具提示格式

  18. 18

    显示在工具提示图标顶部的工具提示

  19. 19

    Highcharts-如何在多个系列柱形图中的列顶部对齐共享工具提示?

  20. 20

    如何使用d3为散点图中的多个点创建工具提示

  21. 21

    循环浏览引导工具提示元素,同时显示和隐藏它们

  22. 22

    Chart.js v2:如何使工具提示始终显示在饼图中?

  23. 23

    如何添加单击事件以在NVD3饼图中显示工具提示?

  24. 24

    在动态d3堆栈条形图中显示工具提示的问题

  25. 25

    在d3.js折线图中永久显示工具提示

  26. 26

    在Spotfire条形图中的工具提示中显示不同的类别名称

  27. 27

    无法使用 d3.js 在气泡图中显示工具提示

  28. 28

    当工具提示合并多个系列的数据时,如何以编程方式显示我的图表工具提示?(同步图表)

  29. 29

    高图在工具提示中显示其他自定义数据

热门标签

归档