対数スケールにしたい(gStyle->SetOptLog*

 1#include <TStyle.h>
 2
 3// X軸を対数スケールに設定
 4gStyle->SetOptLogx(1);
 5
 6// Y軸を対数スケールに設定
 7gStyle->SetOptLogy(1);
 8
 9// Z軸を対数スケールに設定(3次元グラフ用)
10gStyle->SetOptLogz(1);

gStyle->SetOptLogxgStyle->SetOptLogygStyle->SetOptLogzメソッドで、 グラフやヒストグラムの軸を対数スケール(対数目盛)に変更できます。

 1from ROOT import gStyle
 2
 3# X軸を対数スケールに設定
 4gStyle.SetOptLogx(1)
 5
 6# Y軸を対数スケールに設定
 7gStyle.SetOptLogy(1)
 8
 9# Z軸を対数スケールに設定
10gStyle.SetOptLogz(1)

対数スケールを理解したい

対数スケールは、広い範囲のデータを見やすく表示するときに有効です。

線形スケール vs 対数スケール

線形スケール:

  • 軸の目盛り間隔が均等

  • 1から10までと100から1000までが同じ距離

  • データが指数関数的に増減する場合、小さい値の詳細が見えにくい

対数スケール

  • 軸の目盛り間隔が指数関数的

  • 1から10までと10から100までが同じ距離

  • 広い範囲のデータを均衡よく表示できる

設定値:

  • 0:線形スケール(デフォルト)

  • 1:対数スケール

異なる軸設定を使いたい

X軸のみ対数スケール

1#include <TStyle.h>
2
3gStyle->SetOptLogx(1);
4gStyle->SetOptLogy(0);

X軸が指数関数的に変化するデータに有効です。 例:周波数応答、べき乗則分布

Y軸のみ対数スケール

1#include <TStyle.h>
2
3gStyle->SetOptLogx(0);
4gStyle->SetOptLogy(1);

Y軸が指数関数的に変化するデータに有効です。 例:指数減衰、確率分布

X軸とY軸の両方を対数スケール

1#include <TStyle.h>
2
3gStyle->SetOptLogx(1);
4gStyle->SetOptLogy(1);

X軸とY軸の両方が広い範囲で変化するデータに有効です。 例:べき乗則(パワーロー)に従うデータ

3次元プロット用(Z軸も対数スケール)

1#include <TStyle.h>
2
3gStyle->SetOptLogx(1);
4gStyle->SetOptLogy(1);
5gStyle->SetOptLogz(1);

3次元ヒストグラムやプロットで、全軸を対数スケールに設定します。

線形スケールに戻す

1#include <TStyle.h>
2
3gStyle->SetOptLogx(0);
4gStyle->SetOptLogy(0);
5gStyle->SetOptLogz(0);

すべての軸を線形スケールに戻します。

実用例

指数減衰データの可視化

1#include <TStyle.h>
2
3// Y軸を対数スケールにして、指数減衰を直線で表示
4gStyle->SetOptLogx(0);
5gStyle->SetOptLogy(1);

指数関数 \(y = Ae^{-\lambda x}\) は、Y軸を対数スケールにすると直線として表示されます。 これにより、減衰率\(\lambda\)を視覚的に読み取りやすくなります。

べき乗則データの解析

1#include <TStyle.h>
2
3// X軸とY軸の両方を対数スケールに設定
4gStyle->SetOptLogx(1);
5gStyle->SetOptLogy(1);

べき乗則 \(y = Ax^{\alpha}\) は、両軸を対数スケールにすると直線として表示されます。 天体物理学や天文学でよく見られるデータ分布の解析に有効です。

周波数応答特性の測定

1#include <TStyle.h>
2
3// X軸を対数スケール、Y軸を線形スケール
4gStyle->SetOptLogx(1);
5gStyle->SetOptLogy(0);

電子工学や音響学の周波数応答(bodeプロット)では、 X軸を対数スケールにして周波数の詳細な変化を表示します。

粒子検出器のエネルギースペクトル

1#include <TStyle.h>
2
3// Y軸を対数スケール
4gStyle->SetOptLogy(1);

高エネルギー物理学の実験では、 エネルギースペクトルのカウント数が指数的に減少するため、 Y軸を対数スケールにして全範囲を表示します。

注意事項

  • ゼロや負の値: 対数スケールではゼロや負の値は表示できません。データに負の値が含まれる場合は線形スケールを使用してください

  • グリッドライン: 対数スケールでは、主目盛りと副目盛りの間隔が異なります

  • データの確認: 対数スケールの使用前に、データの範囲と分布を確認してください

個別のオブジェクトで設定したい

gStyleで設定した対数スケール設定は、その後に作成されるオブジェクトに適用されます。 すでに作成されたオブジェクトに対して適用する場合は、オブジェクトのメソッドを直接使用してください。

 1#include <TStyle.h>
 2#include <TH1F.h>
 3
 4TH1F *hist = new TH1F("hist", "Histogram", 100, 0, 10);
 5// ...データを充填...
 6
 7// このヒストグラムのY軸だけを対数スケールに設定
 8hist->GetYaxis()->SetLogscale(1);
 9
10// X軸を対数スケールに設定
11hist->GetXaxis()->SetLogscale(1);

リファレンス