タイトルと軸ラベルを変更したい(SetTitle、SetXTitle)
ヒストグラムを作成後に、タイトルや軸ラベルを変更できます。コンストラクターで指定する方法と異なり、動的にタイトルを更新できます。
クイックリファレンス
C++
1#include <TH1D.h>
2
3TH1D *h = new TH1D("h", "Initial Title", 100, 0, 10);
4
5// タイトルを変更
6h->SetTitle("Updated Title");
7
8// タイトルと軸ラベルをセミコロン区切りで設定
9h->SetTitle("Title;X axis;Y axis");
10
11// 個別に軸ラベルを設定
12h->SetXTitle("X axis");
13h->SetYTitle("Y axis");
14h->SetZTitle("Z axis");
15
16// タイトルを取得
17const char* title = h->GetTitle();
18
19// 軸ラベルを取得
20const char* xtitle = h->GetXaxis()->GetTitle();
21const char* ytitle = h->GetYaxis()->GetTitle();
Python
1from ROOT import TH1D
2
3h = TH1D("h", "Initial Title", 100, 0, 10)
4
5# タイトルを変更
6h.SetTitle("Updated Title")
7
8# タイトルと軸ラベルをセミコロン区切りで設定
9h.SetTitle("Title;X axis;Y axis")
10
11# 個別に軸ラベルを設定
12h.SetXTitle("X axis")
13h.SetYTitle("Y axis")
14
15# タイトルを取得
16title = h.GetTitle()
17
18# 軸ラベルを取得
19xtitle = h.GetXaxis().GetTitle()
20ytitle = h.GetYaxis().GetTitle()
タイトル全体を変更したい(SetTitle)
SetTitleメソッドでヒストグラムのタイトル全体を変更できます。
1#include <TH1D.h>
2
3TH1D *h = new TH1D("h", "Initial Title", 100, 0, 10);
4
5// タイトルのみを変更
6h->SetTitle("New Histogram Title");
7
8// タイトルと軸ラベルをセミコロン区切りで同時に指定
9h->SetTitle("Histogram;X-axis;Y-axis");
10
11// 現在のタイトルを取得
12printf("Title: %s\n", h->GetTitle());
セミコロン(;)で区切ることで、タイトル、X軸ラベル、Y軸ラベルを同時に指定できます。
軸ラベルを個別に変更したい(SetXTitle、SetYTitle、SetZTitle)
個別に軸ラベルを設定したい場合は、SetXTitle、SetYTitle、SetZTitleメソッドを使用します。
1#include <TH1D.h>
2
3TH1D *h = new TH1D("h", "Histogram", 100, 0, 10);
4
5// X軸のラベルを設定
6h->SetXTitle("Measurement Value");
7
8// Y軸のラベルを設定
9h->SetYTitle("Frequency");
10
11// 3次元ヒストグラム(TH3)の場合、Z軸も設定可能
12// h->SetZTitle("Z-axis Label");
軸ラベルを取得したい(GetXaxis()->GetTitle())
軸ラベルを取得する場合は、GetXTitleメソッドではなく、軸オブジェクトを経由して取得する必要があります。
1#include <TH1D.h>
2
3TH1D *h = new TH1D("h", "Histogram", 100, 0, 10);
4h->SetXTitle("X Value");
5h->SetYTitle("Y Value");
6
7// 軸オブジェクトを取得してラベルを確認
8const char* xtitle = h->GetXaxis()->GetTitle();
9const char* ytitle = h->GetYaxis()->GetTitle();
10
11printf("X-axis: %s\n", xtitle);
12printf("Y-axis: %s\n", ytitle);
13
14// このように直接呼び出すと、期待した結果が得られません
15// const char* xtitle2 = h->GetXTitle(); // 存在しないメソッド
重要:軸ラベルを取得する際は、GetXaxis()やGetYaxis()メソッドで軸オブジェクトを取得してから、その軸オブジェクトのGetTitle()メソッドを呼び出してください。
実践例:複数のヒストグラムのタイトルを動的に設定したい
1#include <TH1D.h>
2#include <TString.h>
3
4// 複数のヒストグラムを生成
5TH1D *histograms[5];
6for (Int_t i = 0; i < 5; i++) {
7 TString name;
8 name.Form("h%d", i);
9
10 histograms[i] = new TH1D(name.Data(), "", 100, 0, 10);
11
12 // 動的にタイトルと軸ラベルを設定
13 TString title;
14 title.Form("Dataset %d;Measurement;Count", i + 1);
15 histograms[i]->SetTitle(title.Data());
16}
このサンプルでは、ループ内で複数のヒストグラムを生成し、各ヒストグラムに異なるタイトルを動的に設定しています。TString::Formを使用することで、タイトルに番号やパラメーターを含めることができます。
関連メソッド
TH1::GetTitle - タイトルを取得
TH1::GetXaxis - X軸オブジェクトを取得
TH1::GetYaxis - Y軸オブジェクトを取得
TAxis::GetTitle - 軸のタイトルを取得