Highcharts - 某些系列的共享工具提示

时间:2014-09-02 09:38:28

标签: javascript highcharts

我想使用highcharts有以下行为。 我需要有两种工具提示:

  1. 默认的共享工具提示
  2. 自定义工具提示
  3. 对于自定义工具提示,我可以使用简单的工具提示格式化程序。 问题在于共享工具提示。 是否可以与一些系列共享默认工具提示,并且可以自定义一个?

    感谢。

2 个答案:

答案 0 :(得分:2)

这是可能的,但您需要使用格式化程序并准备逻辑。请参阅非常简单的演示http://jsfiddle.net/7gmxzwdf/5/

        formatter:function(){
            var txt = '',
                x = this.x,
                series = this.point.series.chart.series;

            if(this.series.options.shared) {
                $.each(series,function(i,s){
                    if(s.options.shared) {
                        $.each(s.data,function(j, d){
                            if(d.x === x) {
                                txt += '<span style="color:'+s.color+';font-weight:bold;">'+s.name+'</span> value: ' + d.y + '<br/>';
                            }
                        });
                    }
                });
            } else {
                txt = 'not shared value: ' + this.y;
            }

            return txt;
        }

答案 1 :(得分:0)

API中没有明显的方法,但你可以通过检测鼠标经过的系列来获得类似于你想要的东西:

 var series1Selected=0;
 ...
 series: [{
        events: {
            mouseOver: function () {
                series1Selected = 1;
            },
            mouseOut: function () {
                series1Selected = 0;
            }
        },

然后,您可以根据您是否在系列1上悬停来更改格式化工具提示的外观。

 tooltip: {
        formatter: function () {
            if (series1Selected == 1) {
                var s = '<b>Series 1</b>';
            } else {
                var s = '<b>Shared</b>';
                $.each(this.points, function () {
                    s += '<br/>' + this.series.name + ': ' + this.y + 'm';
                });

            }
            return s;
        },
        shared: true
    },

http://jsfiddle.net/rjbfmob6/

这有点毛躁,但可以作为解决方案的基础。