キャンバスを分割したい(TCanvas::Divide)
1#include <TCanvas.h>
2#include <TH1D.h>
3
4TCanvas *c = new TCanvas("c", "Divided Canvas", 1200, 800);
5
6// 2列×3行に分割(6つの領域)
7c->Divide(2, 3);
8
9// 5番目の領域に描画
10c->cd(5);
TCanvas::Divideでキャンバスを複数の領域に分割できます。
TCanvas::cdで描画対象の領域を選択します。
1from ROOT import TCanvas
2
3c = TCanvas("c", "Divided Canvas", 1200, 800)
4
5c.Divide(2, 3)
6c.cd(5)
マージンを調整したい
1#include <TCanvas.h>
2#include <TH1D.h>
3
4TCanvas *c = new TCanvas("c", "Canvas", 1200, 800);
5
6// X・Yマージンを5%に設定(デフォルトは1%)
7c->Divide(2, 3, 0.05, 0.05);
8
9for (int i = 1; i <= 6; i++) {
10 c->cd(i);
11 TH1D *h = new TH1D(Form("h%d", i), Form("Histo %d", i), 50, -3, 3);
12 h->FillRandom("gaus", 1000);
13 h->Draw();
14}
TCanvas::Divideの第3引数と第4引数でXマージンとYマージンを指定できます。
マージンは領域の端から描画領域までのスペースで、デフォルトは0.01(1%)です。
描画領域を切り替えたい(TCanvas::cd)
1#include <TCanvas.h>
2#include <TGraph.h>
3#include <TMath.h>
4
5TCanvas *c = new TCanvas("c", "Canvas", 1200, 800);
6c->Divide(1, 2);
7
8c->cd(1);
9TGraph *g1 = new TGraph();
10for (int i = 0; i < 10; i++) g1->SetPoint(i, i, i * i);
11g1->SetTitle("Upper Area");
12g1->Draw("APL");
13
14c->cd(2);
15TGraph *g2 = new TGraph();
16for (int i = 0; i < 10; i++) g2->SetPoint(i, i, TMath::Sqrt(i));
17g2->SetTitle("Lower Area");
18g2->Draw("APL");
TCanvas::cdで描画領域を切り替えて、
複数のヒストグラムやグラフを同じキャンバスに描画できます。
1// 2列×2行に分割
2c->Divide(2, 2);
3// +---+---+
4// | 1 | 2 |
5// +---+---+
6// | 3 | 4 |
7// +---+---+
8
9// 2列x3行の分割
10c->Divide(2, 3);
11// +---+---+
12// | 1 | 2 |
13// +---+---+
14// | 3 | 4 |
15// +---+---+
16// | 5 | 6 |
17// +---+---+
領域番号は左上が1で、左から右、上から下の順に増加します。
1#include <TCanvas.h>
2#include <TH1D.h>
3#include <TRandom.h>
4
5TCanvas *c = new TCanvas("c", "Divided Canvas", 1200, 800);
6c->Divide(2, 2);
7
8for (int i = 1; i <= 4; i++) {
9 c->cd(i);
10 TH1D *h = new TH1D(Form("h%d", i), Form("Histogram %d", i), 100, -3, 3);
11 for (int j = 0; j < 10000; j++) h->Fill(gRandom->Gaus(0, 1));
12 h->Draw();
13}
ループ処理と組み合わせて、複数のヒストグラムを効率的に描画できます。
1c->cd(0);
0を指定するとメインキャンバスが選択されます。
関連メソッド
TCanvas - キャンバスの基本
TCanvas::SaveAs - 分割されたキャンバスを保存する