Y軸目盛を自動的に最適化する

結局使わなかったんですが、Y軸メモリの最大値をデータに合わせて最適化する方法を考えてみました。
ここではPHPを使っています。

まずグリッドの間隔を定めます。

$grid_count = 6;

グリッドの間隔に対して一定の倍率を用意しておきます。

$grid_magnification = 1.1;

データ中の最大値を求めておきます。

$real_max_value = X;

最大値を間隔で割って実際のグリッド間隔を求めます。

$grid_real_scale = $real_max_value / $grid_count;

求めたグリッドの間隔の桁数を算出します。

$scale_digit = pow(10,floor(log10($grid_real_scale)));

グリッドの実際の間隔に倍率をかけて桁数で割り、10倍して切り捨ててさらに10で割ることで小数点以下1桁にして桁数をかけます。

$grid_scale = floor(($grid_real_scale * $grid_magnification / $scale_digit) * 10) / 10 * $scale_digit;

計算した間隔にグリッド数をかければ丸めた最大値が取得できます。

$grid_max = $grid_scale * $grid_count;

実際には$real_max_valueに合わせて基数を10ではなく5にしたり、
floorではなくceilを使ってみたり工夫が必要です。

Check Also

VMwareでfstabに書いた共有フォルダがマウントできない

Failed to mount …