Highcharts - 在点上显示工具提示点击鼠标悬停

时间:2014-06-13 11:37:55

标签: highcharts highstock

是否可以在点击点而不是鼠标移动时使用工具提示。

我试过在java脚本警告中显示值,如下所示

plotOptions: {
        series: {
            cursor: 'pointer',
            point: {
                events: {
                    click: function() {
                        alert ('Category: '+ this.category +', value: '+ this.y);
                    }
                }
            }
        }
    }

要求是在点击时显示高图表工具提示。

请帮忙。谢谢!

5 个答案:

答案 0 :(得分:11)

正如@PawelFus所说,它没有得到官方支持,但你可以通过控制工具提示的可见性来捏造它。

首先在图表加载时隐藏它:

       chart: {
            events: {
                load: function(){
                    $('.highcharts-tooltip').hide();
                }
            }
        },

禁用粘性跟踪,并在mouseout上隐藏它,点击show it:

        plotOptions: {
            series: {
                stickyTracking: false,
                events: {
                    click: function() {
                        $('.highcharts-tooltip').show();
                    },
                    mouseOut: function() {
                        $('.highcharts-tooltip').hide();
                    }
                }
            }
        },

这是一个小提琴example

第一次尝试仅适用于Chrome,另一种是:

禁用默认工具提示:

tooltip: {
    enabled: false
},

在图表加载事件中,创建自己的:

 chart: {
     events: {
        load: function(){
            this.myTooltip = new Highcharts.Tooltip(this, this.options.tooltip);                    
         }
     }
 },

在click and mouseout控件中:

plotOptions: {
    series: {
        stickyTracking: false,
        events: {
            click: function(evt) {
                this.chart.myTooltip.refresh(evt.point, evt);
            },
            mouseOut: function() {
                this.chart.myTooltip.hide();
            }                       
        }           
    }
},

我在IE和Chrome中对此进行了测试,我不再安装Firefox了。

使用新的代码段更新到代码9/7/2017:



$(function () {
        $('#container').highcharts({
            xAxis: {
                categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
                    'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
            },
            tooltip: {
                valueSuffix: '°C',
                enabled: false
            },
            chart: {
                events: {
                    load: function(){
                        this.myTooltip = new Highcharts.Tooltip(this, this.options.tooltip);
                    }
                }
            },
            plotOptions: {
                series: {
                    stickyTracking: false,
                    events: {
                        click: function(evt) {
                        		this.chart.myTooltip.options.enabled = true;
                            this.chart.myTooltip.refresh(evt.point, evt);
                        },
                        mouseOut: function() {
                            this.chart.myTooltip.hide();
                            this.chart.myTooltip.options.enabled = false;
                        }                       
                    }
                    
                }
            },
            series: [{
                name: 'Tokyo',
                data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]
            }]
        });
    });
    

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://code.highcharts.com/highcharts.src.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>

<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

useHTML: true添加像我这样的问题的用户,并希望在点击时显示工具提示 ,而不是悬停。

tooltip: {
  useHTML: true
}

这是fiddle

答案 2 :(得分:0)

只为那些与我自己有同样问题的人添加(请在正确回答后查看@kevinandrada的评论,我无法发表评论):如果您在tooltip.refresh你和tooltip.shared = true时拨打Uncaught TypeError: Cannot read property 'category' of undefined #39;将获得例外plotOptions: { series: { stickyTracking: false, events: { click: function(evt) { var points = this.chart.series.map(function(d) { return d.searchPoint(evt, true) }); this.chart.myTooltip.refresh(points, evt); }, mouseOut: function() { this.chart.myTooltip.hide(); } } } },

你应该提供一个点数组作为第一个参数:

{{1}}

答案 3 :(得分:0)

可以通过css解决在AlexandraEspichán出色的小提琴中显示的第一个鼠标悬停工具提示的问题,并通过将他的隐身类替换为:

.highcharts-tooltip:not(.clone){
    visibility: hidden !important;
}

答案 4 :(得分:-1)

以下是&#34; 无法读取未定义类别&#34;的解决方法。我只是抓住图表的悬停点并将它们传递给刷新。

point: {
    events: {
        mouseOver: function(evt) {
            var hoveredPoints = a.hoverPoints;
            a.tooltip.refresh(hoveredPoints);   
        },
        mouseOut: function() {
            a.tooltip.hide();
        }                       
    }
}

示例小提琴:http://jsfiddle.net/2swEQ/153/