ラベル表示用の「いい数字」を作る機能をまとめました。この関数は、log10
奇数を正規化するために使用します。残念ながら、log10
0 未満の数値は処理しませんが、 NAN を返します。
今、私は のような「醜い」数を持っています、またはの-2.36
ような最も近い素敵な数を取得する方法-2.3
-2.0
それを関数に渡して後で2.36
掛けるためにに変換すると、 ---> no go になります。-1
-2.4
nice-number > ugly-number
何か案は?
ナイス番号などを定義するためのリンク:
http://wiki.tcl.tk/16640
グラフ上の「ナイス」グリッド ライン間隔のアルゴリズムは、
最も近いナイス番号に丸められます
これが私のコードです:
function niceNum($range, $round) {
// $exponent: exponent of range
// $fraction: fractional part of range
// $niceFraction: nice, rounded fraction
if ($range==0) return 0;
$exponent = floor(log10($range));
$fraction = $range / pow(10, $exponent);
if ($round) {
if ($fraction < 1.5)
$niceFraction = 1;
elseif ($fraction < 3)
$niceFraction = 2;
elseif ($fraction < 7)
$niceFraction = 5;
else
$niceFraction = 10;
} else {
if ($fraction <= 1)
$niceFraction = 1;
elseif ($fraction <= 2)
$niceFraction = 2;
elseif ($fraction <= 5)
$niceFraction = 5;
else
$niceFraction = 10;
}
return $niceFraction * pow(10, $exponent);
}