2014-12-06 92 views
0

this fiddle中,使用共享工具提示。奇蹟般有效。Highcharts - 分類氣泡圖共享工具提示

tooltip: { 
     formatter: function() { 
      console.log(this); 
      var s = '<b>' + this.x + '</b>'; 

      $.each(this.points, function() { 
       s += '<br/>' + this.series.name + ': ' + 
        this.y + 'm'; 
      }); 

      return s; 
     }, 
     shared: true 
    } 

現在我正在尋找一種方式來顯示爲氣泡圖共享提示,就像這樣: http://jsfiddle.net/gn6dtx6x/1/

不幸的是,this對象formatter選項屬性是不同於第一例。

那麼,有沒有一種方法可以在氣泡圖中共享工具提示,還是我必須創建自己的自定義工具提示功能?

謝謝你的回答。有一種變通方法這樣做的

回答

1

您需要遍歷每個系列和點,比較x值。

tooltip: { 
     formatter: function() { 
      var s = '<b>' + this.x + '</b>', 
       x = this.point.x; 
      $.each(this.series.chart.series, function (i, serie) { 
       $.each(serie.data, function (j, p) { 
        if (p.x === x) { 
         s += '<br/>' + this.series.name + ': ' + p.y; 
        } 
       }); 
      }); 

      return s; 
     }, 
     shared: true 
    }, 

實施例:http://jsfiddle.net/gn6dtx6x/5/

+0

相同的方法5溶液,感謝名單仍然。 :)令人驚訝的是,當談到共享的泡泡工具提示時,Highcharts改變了它的風格... – nilsole 2014-12-08 13:27:38

+1

是的,但我認爲它更短;) – 2014-12-08 13:33:06

0

一種方法是:http://jsfiddle.net/gn6dtx6x/4/

tooltip: { 
formatter: function() { 
      return shared_tooltip (this.point.x,this.point.y); 
     }, 
     shared: true // true|false does not matter here 
    }, 

而且回調看起來是這樣的:

var shared_tooltip = function(x,y){ 

     var series = $('#container').highcharts().series; 
     var s = x + '|'+y; 

     $.each(series, function (key1, value1){ 
      var data_el_x = value1.data.filter(function(el){ 
       return (el.x === x); 
      }); 
      if(data_el_x.length === 0){ 
       return false; 
      } 
      var data_el_xy = data_el_x.filter(function(el){ 
       return (el.y === y); 
      }); 
      var valfreq = (data_el_xy.length === 0) ? 0 : data_el_xy[0].z; 
      var allfreq = 0; 
      $.each(data_el_x, function (key2, value2){ 
       allfreq += value2.z; 
      }); 

      s+='<br/>'+value1.name+': '+valfreq+'/'+allfreq; 

     }); 

     return s; 

    }; 
相關問題