void graphs2scales3() { gStyle->SetOptStat(0); gStyle->SetPadTopMargin(0.); gStyle->SetPadBottomMargin(0.); gStyle->SetPadLeftMargin(0.); gStyle->SetPadRightMargin(0.); gStyle->SetFillColor(0); gStyle->SetCanvasColor(0); gStyle->SetPadColor(0); gStyle->SetFrameBorderMode(0); gStyle->SetTextFont(63); gStyle->SetTextSize(24); Double_t mlb = 0.3; Double_t mrt = 0.1; Double_t nx = 2; Double_t ny = 2; c1 = new TCanvas("c1","c1",200,10,700,500); DividegPad(nx,ny,mlb,mrt,mrt,mlb); // create first graph c1->cd(1); c1_1->DrawFrame(-0.5,-1,1.1,11); c1_1->SetTicks(2,2); //c1_1->SetRightMargin(0.07); Int_t n1 = 10; Double_t x1[] = {-0.22, 0.05, 0.25, 0.35, 0.5, 0.61,0.7,0.85,0.89,0.95}; Double_t y1[] = {1,2.9,5.6,7.4,9,9.6,8.7,6.3,4.5,1}; Double_t ex1[] = {.05,.1,.07,.07,.04,.05,.06,.07,.08,.05}; Double_t ey1[] = {.8,.7,.6,.5,.4,.4,.5,.6,.7,.8}; gr1 = new TGraphErrors(n1,x1,y1,ex1,ey1); gr1->SetMarkerColor(kBlue); gr1->SetMarkerStyle(21); gr1->Draw("LP"); // create second graph c1->cd(2); c1_2->DrawFrame(-0.5,-5,1.1,105); c1_2->SetTicks(2,2); Int_t n2 = 10; Float_t x2[] = {-0.28, 0.005, 0.19, 0.29, 0.45, 0.56,0.65,0.80,0.90,1.01}; Float_t y2[] = {0.82,3.86,7,9,10,10.55,9.64,7.26,5.42,2}; Float_t ex2[] = {.04,.12,.08,.06,.05,.04,.07,.06,.08,.04}; Float_t ey2[] = {.6,.8,.7,.4,.3,.3,.4,.5,.6,.7}; for (Int_t i=0;iSetMarkerColor(kRed); gr2->SetMarkerStyle(20); gr2->SetName("gr2"); gr2->Draw("LP"); // create third graph c1->cd(3); c1_3->DrawFrame(-0.5,-1,1.1,11); c1_3->SetTicks(2,2); gr3 = new TGraphErrors(n1,x1,y1,ex1,ey1); gr3->SetMarkerColor(kBlue); gr3->SetMarkerStyle(21); gr3->Draw("LP"); // create fourth graph c1->cd(4); c1_4->DrawFrame(-0.5,-5,1.1,105); c1_4->SetTickx(); c1_4->SetTicky(); gr4 = new TGraphErrors(n2,x2,y2,ex2,ey2); gr4->SetMarkerColor(kRed); gr4->SetMarkerStyle(20); gr4->SetName("gr2"); gr4->Draw("LP"); c1->Print("graphs2scales3.eps"); } void DividegPad(Int_t nx, Int_t ny, Float_t l, Float_t r, Float_t t, Float_t b) { Int_t ix, iy, n=0; Double_t x1, x2, y1, y2; Double_t dx = ((1-r)*(1-l))/((1-r)*(1-l)*(nx-2)-r+2-l); Double_t dl = dx/(1-l); Double_t dy = ((1-t)*(1-b))/((1-t)*(1-b)*(ny-2)-t+2-b); Double_t db = dy/(1-b); char *name = new char [strlen(gPad->GetName())+6]; y1 = 0; y2 = db; for (iy=0; iy x2) continue; n++; sprintf(name,"%s_%d",gPad->GetName(),n); pad = new TPad(name,name,x1,y1,x2,y2,0); if (ix==0) pad->SetLeftMargin(l); if (ix==nx-1) pad->SetRightMargin(r); if (iy==ny-1) pad->SetTopMargin(t); if (iy==0) pad->SetBottomMargin(b); x1 = x2; if (ix==nx-2) x2 = 1; else x2 = x1+dx; pad->SetNumber(n); pad->Draw(); } y1 = y2; if (iy==ny-2) y2 = 1; else y2 = y1+dy; } }