タイトルと軸ラベルを変更したい(SetTitleSetXTitle

ヒストグラムを作成後に、タイトルや軸ラベルを変更できます。コンストラクターで指定する方法と異なり、動的にタイトルを更新できます。

クイックリファレンス

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軸ラベルを同時に指定できます。

軸ラベルを個別に変更したい(SetXTitleSetYTitleSetZTitle

個別に軸ラベルを設定したい場合は、SetXTitleSetYTitleSetZTitleメソッドを使用します。

 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を使用することで、タイトルに番号やパラメーターを含めることができます。

関連メソッド

参考資料