2012-04-16 27 views
6

在我的HighChart折線圖中,系列數據是從我的Ruby on Rails應用程序動態提供的。有時一系列值都爲零或更低這是HighCharts一個問題,它拋出以下異常:Highcharts - 在具有對數Y軸的折線圖系列中處理和顯示零(或負)值的最佳方法

Highcharts Error #10 
Can't plot zero or subzero values on a logarithmic axis 

所以作爲工作的時候,我處理我的紅寶石陣列與一個有條件替換價值較低的零微不足道的正數,例如, 0.00001如下圖所示:

oil_vol_array = d_array[1].map { |e| (e < 0.0001) ? 0.0001 : e.round(3) } 

這防止拋出異常,但在顯示顯示了啓動在0.0001圖表如果初始值是零(可以理解的,因爲我要求它)。更理想的顯示是零啓動圖形,但HighChart不喜歡它:(

有沒有一種方式,可以做到這一點?

回答

9

您是否嘗試過使用label formatter

var chart = new Highcharts.Chart({ 
    yAxis: {   
     labels: { 
      formatter: function() { 
       if(this.value === 0.00001){ 
        return 0; 
       } else { 
        return this.value; 
       } 
      } 
     } 
    } 
}); 
+0

謝謝。不知道。這是我與HighCharts的第二天:) – Bharat 2012-04-17 03:10:48

1

當處理大量數字時,最好使用標準格式化程序來處理0以外的值,否則您的標籤將會像這樣顯示:1000000000 ...要更改此替換'else'語句以調用原始標籤格式化方法如下:

var chart = new Highcharts.Chart({ 
    yAxis: {   
     labels: { 
      formatter: function() { 
       if(this.value === 0.00001){ 
        return 0; 
       } else { 
        return Highcharts.Axis.prototype.defaultLabelFormatter.call(this); 
       } 
      } 
     } 
    } 
});