2013-03-12 66 views
3

我正在使用Highcharts與「scatter」的系列類型。我還啓用了x軸縮放功能。Highcharts - 如何在縮放時動態更改標記半徑?

現在,將標記半徑調整爲縮放級別會很好。 喜歡的東西:

events: { 
    selection: function(event) { 
     var extremesObject = event.xAxis[0], 
      min = extremesObject.min, 
      max = extremesObject.max; 

     this.series[0].marker.radius = (max - min)/5; 
    } 

}

最後一行this.series[0]...是我要找的代碼。

我嘗試這樣做:

 jQuery.each(this.series[1].data, function (i, point) { 
      point.update({ 
       marker: { 
        radius: 10/(max - min) 
       } 
      }); 
     }); 

但在重繪事件時這給了我一個錯誤。這裏是一個例子:http://jsfiddle.net/dbX4F/2/

回答

1

我認爲這是不可能的當前版本的高圖,因爲它沒有一個API來更新系列選項。但是,它可能在v3Beta版本中。

變焦的數學需要一些工作,但我來到這裏工作的基本知識:http://jsfiddle.net/Jrh2G/

events: { 
    selection: function (event) { 
     var extremesObject = event.xAxis[0], 
     min = extremesObject.min, 
     max = extremesObject.max; 
     console.log(min + " " + max); 
     // The maths needs some work to make the radius scale better with min/max. 
     // Also, you should probabl take into account min/max y values as well. 
     this.series[0].update({marker:{radius:10/(max-min)}}); 
} 
+0

大,這個作品!但我不知道我是否應該使用測試版本,因爲這是一個商業服務器... 我試過類似這樣的使用非beta版,但給我一個錯誤:'jQuery.each(this.series [ 0] .data,function(i,point){point.update {{marker:{radius:10 /(max-min)}});});' – rantanplan 2013-03-12 09:32:36

+0

這個月beta版本發佈。我一直在看它或我們的生產環境,因爲我們需要泡泡圖功能。雖然我在泡泡圖中報告了一個錯誤,但它目前看起來還不錯。 – SteveP 2013-03-12 09:37:45

+0

你用point.update得到了什麼錯誤? – SteveP 2013-03-12 09:39:10

0

最後,我找到了解決辦法。它可以在同一陣列中的超車點配置的圖形數據:

jQuery.each(data, function(i, val) { 
    if (i > min && i < max) { 
     detailScatter.push({ 
      marker: { 
       radius: 80/(max - min) 
      }, 
      x: i, 
      y: val 
     }); 
    } 
}); 

detailChart.series[1].setData(detailScatter); 

就像一個魅力 - 在這裏看到:http://jsfiddle.net/dbX4F/3/