6

私の HighChart 折れ線グラフでは、一連のデータが Ruby on Rails アプリケーションから動的に供給されています。シリーズの値が 0 以下の場合があり、これは HighCharts の問題であり、次の例外がスローされます。

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 はそれを好みません :(

これを達成する方法はありますか?

4

2 に答える 2

9

ラベルフォーマッタを使ってみましたか?

var chart = new Highcharts.Chart({ 
    yAxis: {        
        labels: {
            formatter: function() {
                if(this.value === 0.00001){
                    return 0;
                } else {
                    return this.value;
                }
            }
        }
    }
});
于 2012-04-16T21:57:49.547 に答える
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);
                }
            }
        }
    }
});
于 2013-10-09T20:03:52.340 に答える