2012-04-16 12 views
6

HighChartの折れ線グラフでは、系列データがRuby on Railsアプリケーションから動的に供給されています。時には、系列値はHighChartsのための問題であり、それは次の例外がスローされ、ゼロ以下のとおりです。ハイチャート - 対数のY軸を持つ折れ線グラフでゼロ(または負の)値を処理および表示する最適な方法

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

ので、回避策として、私は私のRubyの配列は、条件付きでANと小さい値のゼロを置き換えるために処理します無意味な正の数、.eg以下に示すように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での2日目です:) – Bharat

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); 
       } 
      } 
     } 
    } 
}); 
関連する問題