ヒストグラムを描画したい(TH1::Draw)
1#include <TH1D.h>
2#include <TCanvas.h>
3#include <TRandom3.h>
4
5TCanvas *c = new TCanvas("c", "Canvas", 800, 600);
6
7TH1D *h = new TH1D("h", "Histogram", 100, -5, 5);
8TRandom3 rng;
9for (int i = 0; i < 10000; i++) h->Fill(rng.Gaus(0, 1));
10
11h->Draw();
12c->SaveAs("output.png");
TH1::Drawでヒストグラムをキャンバスに描画できます。
引数に描画オプションを指定することで表示スタイルを変えられます。
1from ROOT import TH1D, TCanvas, TRandom3
2
3c = TCanvas("c", "Canvas", 800, 600)
4
5h = TH1D("h", "Histogram", 100, -5, 5)
6rng = TRandom3()
7for i in range(10000):
8 h.Fill(rng.Gaus(0, 1))
9
10h.Draw()
11c.SaveAs("output.png")
描画オプション
オプション |
説明 |
|---|---|
(デフォルト) |
バーグラフ |
|
アウトラインのみ |
|
エラーバー付き |
|
エラーバー付き(端に横線あり) |
|
エラーを矩形で表示 |
|
スプライン曲線 |
|
折れ線 |
|
マーカー |
|
棒グラフ |
|
前の描画に重ねる |
|
カラーマップ(TH2向け) |
エラーバー付きで描画したい
1h->Draw("E");
統計誤差(ビン内容の平方根)をエラーバーで表示します。 測定データを扱うときに使いましょう。
1h.Draw("E")
複数のヒストグラムを重ねて描画したい
1#include <TH1D.h>
2#include <TCanvas.h>
3#include <TRandom3.h>
4
5TCanvas *c = new TCanvas("c", "Canvas", 800, 600);
6
7TH1D *h1 = new TH1D("h1", "Signal", 100, -5, 5);
8TH1D *h2 = new TH1D("h2", "Background", 100, -5, 5);
9
10TRandom3 rng;
11for (int i = 0; i < 5000; i++) {
12 h1->Fill(rng.Gaus(0, 1));
13 h2->Fill(rng.Gaus(1, 1.5));
14}
15
16h1->SetLineColor(kRed);
17h2->SetLineColor(kBlue);
18
19h1->Draw();
20h2->Draw("SAME");
21
22c->BuildLegend();
"SAME"オプションで2本目以降を重ねて描画できます。
色を変えておくと見分けやすくなります。
描画スタイルを比較したい
1#include <TH1D.h>
2#include <TCanvas.h>
3#include <TRandom3.h>
4
5TCanvas *c = new TCanvas("c", "Canvas", 800, 600);
6c->Divide(2, 2);
7
8TH1D *h = new TH1D("h", "Data", 100, -5, 5);
9TRandom3 rng;
10for (int i = 0; i < 5000; i++) h->Fill(rng.Gaus(0, 1));
11
12c->cd(1); h->Draw(); // デフォルト
13c->cd(2); h->Draw("HIST"); // アウトラインのみ
14c->cd(3); h->Draw("E"); // エラーバー
15c->cd(4); h->Draw("C"); // スプライン曲線
ログスケールで描画したい
1TCanvas *c = new TCanvas("c", "Canvas", 800, 600);
2c->SetLogy();
3h->Draw();
SetLogy()でY軸をログスケールにできます。
SetLogx()でX軸も同様に設定できます。
関連メソッド
TH1::Fill - データを入力する
TH1::Fit - フィットする
TCanvas::SaveAs - ファイルに保存する
TCanvas::Divide - キャンバスを分割する
TCanvas::SetLog - ログスケールに設定する