void CanvasPartition(TCanvas *C,const Int_t Nx = 2,const Int_t Ny = 2, Float_t lMargin = 0.15, Float_t rMargin = 0.05, Float_t bMargin = 0.15, Float_t tMargin = 0.05); void canvas2() { auto C = new TCanvas("C","canvas",1024,640); C->SetFillStyle(4000); // Number of PADS const Int_t Nx = 3; const Int_t Ny = 2; // Margins Float_t lMargin = 0.12; Float_t rMargin = 0.05; Float_t bMargin = 0.15; Float_t tMargin = 0.05; // Canvas setup CanvasPartition(C,Nx,Ny,lMargin,rMargin,bMargin,tMargin); TPad *pad[Nx][Ny]; for (Int_t i=0;icd(0); // Get the pads previously created. char pname[16]; sprintf(pname,"pad_%i_%i",i,j); pad[i][j] = (TPad*) gROOT->FindObject(pname); pad[i][j]->Draw(); /// pad[i][j]->SetFillStyle(4000); pad[i][j]->SetFrameFillStyle(4000); pad[i][j]->cd(); } } // Dummy histogram. gStyle->SetOptStat(0); auto h = new TH1F("histo","",100,-5.0,5.0); h->FillRandom("gaus",10000); pad[0][0]->cd(); h->Draw(""); pad[1][0]->cd(); h->Draw(""); TLatex *xtitle = new TLatex(); xtitle->SetTextAlign(22); xtitle->SetTextSize(0.1415929); xtitle->DrawLatexNDC(0.5,0.1,"X Title"); pad[2][0]->cd(); h->Draw(""); pad[0][1]->cd(); h->Draw(""); pad[1][1]->cd(); h->Draw(""); pad[2][1]->cd(); h->Draw(""); C->cd(0); auto ytitlepad = new TPad("ytitlepad","",0.,0.,0.1,1.); ytitlepad->Draw(); ytitlepad->cd(); TLatex *ytitle = new TLatex(); ytitle->SetTextAlign(22); ytitle->SetTextSize(0.3); ytitle->SetTextAngle(90); ytitle->DrawLatexNDC(0.5,0.5,"Y Title"); } void CanvasPartition(TCanvas *C,const Int_t Nx,const Int_t Ny, Float_t lMargin, Float_t rMargin, Float_t bMargin, Float_t tMargin) { if (!C) return; // Setup Pad layout: Float_t vSpacing = 0.0; Float_t vStep = (1.- bMargin - tMargin - (Ny-1) * vSpacing) / Ny; Float_t hSpacing = 0.0; Float_t hStep = (1.- lMargin - rMargin - (Nx-1) * hSpacing) / Nx; Float_t vposd,vposu,vmard,vmaru,vfactor; Float_t hposl,hposr,hmarl,hmarr,hfactor; for (Int_t i=0;icd(0); char name[16]; sprintf(name,"pad_%i_%i",i,j); TPad *pad = (TPad*) gROOT->FindObject(name); if (pad) delete pad; pad = new TPad(name,"",hposl,vposd,hposr,vposu); pad->SetLeftMargin(hmarl); pad->SetRightMargin(hmarr); pad->SetBottomMargin(vmard); pad->SetTopMargin(vmaru); pad->SetFrameBorderMode(0); pad->SetBorderMode(0); pad->SetBorderSize(0); pad->Draw(); } } }