対数スケールにしたい(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->SetOptLogx、gStyle->SetOptLogy、gStyle->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);