キャンバスしたい(TCanvas

 1#include <TCanvas.h>
 2#include <TH1D.h>
 3#include <TRandom.h>
 4
 5TCanvas *c = new TCanvas("c1", "My Canvas", 800, 600);
 6
 7TH1D *h = new TH1D("h", "Gaussian;x;Entries", 100, -3, 3);
 8for (int i = 0; i < 10000; i++) h->Fill(gRandom->Gaus(0, 1));
 9h->Draw();
10
11c->SaveAs("output.png");

TCanvasはROOTの描画領域を提供するクラスです。 ヒストグラムやグラフはTCanvas上に描画されます。

 1from ROOT import TCanvas, TH1D, TRandom3
 2
 3c = TCanvas("c1", "My Canvas", 800, 600)
 4
 5h = TH1D("h", "Gaussian;x;Entries", 100, -3, 3)
 6rng = TRandom3()
 7for i in range(10000):
 8    h.Fill(rng.Gaus(0, 1))
 9h.Draw()
10
11c.SaveAs("output.png")

キャンバスのサイズを変えたい

1#include <TCanvas.h>
2
3// TCanvas(name, title, width, height)
4TCanvas *c = new TCanvas("c1", "My Canvas", 1200, 800);

引数はそれぞれ、識別名・タイトル・幅(ピクセル)・高さ(ピクセル)です。 引数なしで作成した場合はデフォルトサイズになります。

名前を変えたい(TCanvas::SetName

1#include <TCanvas.h>
2
3TCanvas *c = new TCanvas("c1", "My Canvas", 800, 600);
4c->SetName("new_name");

SetNameでキャンバスの識別名を変更できます。 識別名はROOTファイルに保存するときのキーになります。

1from ROOT import TCanvas
2
3c = TCanvas("c1", "My Canvas", 800, 600)
4c.SetName("new_name")

タイトルを変えたい(TCanvas::SetTitle

1#include <TCanvas.h>
2
3TCanvas *c = new TCanvas("c1", "My Canvas", 800, 600);
4c->SetTitle("New Title");
5c->Update();

SetTitleでウィンドウのタイトルバーに表示される文字列を変更できます。 変更後にUpdateを呼ぶと即座に反映されます。

1from ROOT import TCanvas
2
3c = TCanvas("c1", "My Canvas", 800, 600)
4c.SetTitle("New Title")
5c.Update()

バッチモードしたい(gROOT::SetBatch

1#include <TCanvas.h>
2#include <TH1D.h>
3#include <TROOT.h>
4
5gROOT->SetBatch(true);  // ウィンドウを表示しない
6
7TCanvas *c = new TCanvas("c1", "My Canvas", 800, 600);
8// ... 描画処理 ...
9c->SaveAs("output.png");

マクロやスクリプトでファイルに書き出すだけの場合は、 gROOT->SetBatch(true)でウィンドウ表示を抑制できます。

1from ROOT import TCanvas, gROOT
2
3gROOT.SetBatch(True)
4
5c = TCanvas("c1", "My Canvas", 800, 600)

関連メソッド

参考資料