TCanvas編

色見本を見たい

1root> TCanvas c
2root> c.DrawColorTable()

ROOTのプロンプト内で上のように入力すると、簡単に確認できます。

キャンバスを作成したい(TCanvas

1TCanvas *c1 = TCanvas("c1", "title", 200, 10, 700, 900);
1import TCanvas from ROOT
2c1 = TCanvas("c1", "title", 200, 10, 700, 900);

キャンバスを分割したい(Divide

1c1->Divide(2, 3);
2
3// 5番目のキャンバスに描画する場合
4c1->cd(5);

Divideでキャンバスを分割できます。 またcdでサブキャンバスを指定できます。

グラフの軸をログ表示にしたい

1TCanvas *c1;
2c1->SetLogy();

SetLogyでY軸をログ表示に変更できます。

キャンバスを分割している場合

まず、分割したいキャンバスに移動する

… code:: cpp

c1->cd(2)->SetLogy();
h1->Draw();

gPadは current canvas へのポインタなので、下のようにも書くことができる。

… code:: cpp

c1->cd(2);
gPad->SetLogy();

複数のキャンバスをPDFに保存したい

 1// ファイル名を設定する
 2TString name;
 3name.Form("canvas.pdf");
 4
 5// キャンバスを作成する
 6TCanvas *c1 = new TCanvas(name.Data(), name.Data(), 1000, 500);
 7
 8// PDFファイルを開く
 9c1->Print(name + "[", "pdf");
10
11for (Int_t ihist = 0; ihist < Nhists; ihist++) {
12    // ヒストグラムを描画する
13    hist[ihist]->Draw();
14    // キャンバスをPDFファイルに追加する
15    c1->Print(name, "pdf")
16}
17
18// PDFファイルを閉じる感じ
19c1->Print(name + "]", "pdf");

PDF形式で保存する場合にかぎり、複数のキャンバスを1つのPDFに書き出すことができます。 (やったことないけれどPostScriptでもできるらしいです。PNGはできません。)

ROOT公式ユーザーズガイド “9. Graphics and the Graphical Userinterface : The Postscript Interface” (p139)参照

1// c1->Print(name + "]", "pdf");
2
3c2->Print(name, "pdf")
4c2->Print(name + "]", "pdf")

最後の一文を活用して、別のTCanvasオブジェクトを追加し て保存することもできます。

注釈

括弧( [( )の違いについて

種類

説明

[

この時点ではページを出力しない

(

この時点でページを出力する(空白のページができる?)