エラーバー付きグラフを作りたい(TGraphErrors)
1#include <TGraphErrors.h>
2
3// エラーバー付きグラフを作成
4TGraphErrors *g = new TGraphErrors();
5g->SetPoint(0, 1.0, 2.0);
6g->SetPointError(0, 0.1, 0.2);
7g->SetPoint(1, 2.0, 4.0);
8g->SetPointError(1, 0.15, 0.3);
9g->Draw("AP");
TGraphErrorsは、各データ点に誤差(エラーバー)を付与できるグラフクラスです。
測定値の不確かさやばらつきを可視化する際に活用します。
TGraphと同じように点をプロットしますが、X軸とY軸の両方に誤差を指定できます。
1from ROOT import TGraphErrors
2
3# エラーバー付きグラフを作成
4g = TGraphErrors()
5g.SetPoint(0, 1.0, 2.0)
6g.SetPointError(0, 0.1, 0.2)
7g.SetPoint(1, 2.0, 4.0)
8g.SetPointError(1, 0.15, 0.3)
9g.Draw("AP")
コンストラクターのシグネチャ
1// 空のグラフを作成
2TGraphErrors();
3
4// データ配列からグラフを作成
5TGraphErrors(Int_t n,
6 Double_t *x,
7 Double_t *y,
8 Double_t *ex,
9 Double_t *ey);
デフォルトコンストラクター(引数なし)
点を持たないグラフを作成
SetPoint()とSetPointError()を使って点とエラーを追加
配列コンストラクター
n:点の個数x:X座標の配列y:Y座標の配列ex:X軸の誤差の配列ey:Y軸の誤差の配列
点とエラーを追加したい
1#include <TGraphErrors.h>
2
3TGraphErrors *g = new TGraphErrors();
4
5// 方法1:SetPoint()とSetPointError()を個別に呼び出す
6g->SetPoint(0, 1.0, 2.0);
7g->SetPointError(0, 0.1, 0.2);
8
9// 方法2:GetN()を使って最後に追加する場合
10Int_t n = g->GetN();
11g->SetPoint(n, 2.0, 4.0);
12g->SetPointError(n, 0.15, 0.3);
13
14g->Draw("AP");
SetPoint()で点を追加し、SetPointError()で対応するインデックスにエラー情報を追加します。
重要な点は、SetPoint()とSetPointError()の第1引数(インデックス)を一致させることです。
配列からグラフを作成したい
1#include <TGraphErrors.h>
2
3const Int_t n = 3;
4Double_t x[n] = {1.0, 2.0, 3.0};
5Double_t y[n] = {2.0, 4.0, 6.0};
6Double_t ex[n] = {0.1, 0.15, 0.2};
7Double_t ey[n] = {0.2, 0.3, 0.4};
8
9// 配列からグラフを作成
10TGraphErrors *g = new TGraphErrors(n, x, y, ex, ey);
11
12g->Draw("AP");
配列から直接グラフを作成することで、効率的にデータをプロットできます。
SetPointErrorの注意点
1#include <TGraphErrors.h>
2
3TGraphErrors *g = new TGraphErrors();
4
5// ❌ 間違い:GetN()が呼ぶたびに増加するため、エラーが正しい位置に付かない
6g->SetPoint(g->GetN(), 1.0, 2.0);
7g->SetPointError(g->GetN(), 0.1, 0.2); // GetN()が1を返すが、点は0のままになる
8
9// ✅ 正しい:インデックスを保存してから使用
10Int_t npt = g->GetN();
11g->SetPoint(npt, 1.0, 2.0);
12g->SetPointError(npt, 0.1, 0.2); // 同じインデックスを使用
SetPoint()とSetPointError()を続けて呼び出す際、GetN()は呼び出しのたびに値が変わるため、必ずインデックスを変数に保存してから使用してください。
描画オプション
Draw()メソッドで異なる描画方法を指定できます。
オプション |
説明 |
|---|---|
|
軸を描画(必ず含める) |
|
点を描画 |
|
エラーバーを描画 |
|
直線で連結 |
|
曲線で連結 |
1#include <TGraphErrors.h>
2
3TGraphErrors *g = new TGraphErrors();
4g->SetPoint(0, 1.0, 2.0);
5g->SetPointError(0, 0.1, 0.2);
6g->SetPoint(1, 2.0, 4.0);
7g->SetPointError(1, 0.15, 0.3);
8
9g->Draw("AP"); // 軸+点
10g->Draw("APE"); // 軸+点+エラーバー(推奨)
11g->Draw("APEL"); // 軸+点+エラーバー+直線
関連メソッド
TGraph - 基本的な散布図
TGraphAsymmErrors - 非対称エラーバー付きグラフ
TMultiGraph - 複数グラフの重ね書き