#include "TCanvas.h" #include "TPad.h" #include "TMultiGraph.h" #include "TGraph.h" #include "TGraphErrors.h" #include "TAxis.h" #include "TLegend.h" #include "TLatex.h" #include "TROOT.h" #include "TRatioPlot.h" #include "TPaveStats.h" #include "TStyle.h" #include "TFitResult.h" #include "TF1.h" #include "Math/ProbFuncMathCore.h" #include "Math/QuantFuncMathCore.h" #include #include #include void mulgr() { gStyle->SetOptFit(); const char *datain = "C:/data.txt"; const char *dataout = "C:/simulazione/plot.png"; TCanvas *c01 = new TCanvas("c01","multigraph",1280,1024); TGaxis::SetMaxDigits(3); TPad *pad1 = new TPad("pad1", "pad1", 0.0, 0.3, 1.0, 1.0); pad1->SetGridx(); // Vertical grid pad1->Draw(); // Draw the upper pad: pad1 pad1->cd(); gStyle->SetTitleFontSize(0.08); TMultiGraph *mg = new TMultiGraph(); mg->SetTitle(""); float offx=1.3; float offy=1.3; float margr=0.08; float w=3; float margl=0.12; float line=2; float xl1 = 0.5, xl2 = 5.5; gPad->SetLeftMargin(margl); gPad->SetRightMargin(margr); TPaveText *t=new TPaveText(0.8,0.25,0.85,0.3,"brNDC"); TGraphErrors *gr1 = new TGraphErrors(datain,"%lg %lg %*lg %*lg %*lg"); gr1->SetMarkerColor(kBlue); gr1->SetLineColor(kBlue); gr1->SetMarkerStyle(20); gr1->SetMarkerSize(1.3); gr1->SetLineWidth(line); gr1->SetDrawOption("AP"); mg->Add(gr1); TGraphErrors *gr2 = new TGraphErrors(datain,"%lg %*lg %lg %*lg %*lg"); gr2->SetMarkerColor(kRed); gr2->SetLineColor(kRed); gr2->SetMarkerStyle(21); gr2->SetMarkerSize(1.3); gr2->SetLineWidth(line); gr2->SetDrawOption("P"); mg->Add(gr2); mg->Draw("ALP"); c01->Modified(); c01->Update(); mg->GetXaxis()->SetTitle("Year"); mg->GetXaxis()->SetLimits(xl1,xl2); mg->GetYaxis()->SetTitle("#Schools"); mg->GetYaxis()->SetTitleOffset(offy); mg->GetXaxis()->SetTitleOffset(offx); mg->GetXaxis()->SetLabelFont(43); mg->GetXaxis()->SetLabelSize(20); mg->GetYaxis()->SetLabelFont(43); mg->GetYaxis()->SetLabelSize(20); mg->GetXaxis()->SetTitleFont(43); mg->GetXaxis()->SetTitleSize(20); mg->GetYaxis()->SetTitleFont(43); mg->GetYaxis()->SetTitleSize(20); mg->GetXaxis()->SetNdivisions(10); //2*n c01->Modified(); c01->Update(); TLegend* leg = new TLegend(0.15, 0.75, .25, .85); leg->SetHeader("Legend"); leg->SetNColumns(1); leg->AddEntry(gr1, "Physics", "AP"); leg->AddEntry(gr2, "Total", "P"); leg->Draw(); c01->Modified(); c01->Update(); Int_t bin1= mg->GetXaxis()->FindBin(1); Int_t bin2= mg->GetXaxis()->FindBin(2); Int_t bin3= mg->GetXaxis()->FindBin(3); Int_t bin4= mg->GetXaxis()->FindBin(4); Int_t bin5= mg->GetXaxis()->FindBin(5); mg->GetHistogram()->GetXaxis()->SetBinLabel(bin1,"2016/17"); gPad->Update(); mg->GetXaxis()->ChangeLabel(bin1, 45, 0.02, 31, -1, -1,Form("2016/17")); gPad->Update(); mg->GetXaxis()->ChangeLabel(bin2, 45, 0.02, 31, -1, -1,Form("2017/18")); gPad->Update(); mg->GetXaxis()->ChangeLabel(bin3, 45, 0.02, 31, -1, -1,Form("2018/19")); gPad->Update(); mg->GetXaxis()->ChangeLabel(bin4, 45, 0.02, 31, -1, -1,Form("2019/20")); gPad->Update(); mg->GetXaxis()->ChangeLabel(bin5, 45, 0.02, 31, -1, -1,Form("2020/21")); gPad->Update(); gPad->Update(); gPad->Update(); //t->AddText("Text"); // t->Draw(); c01->cd(); c01->Update(); TPad *pad2 = new TPad("pad2", "pad2", 0.0, 0.0, 1.0, 0.25); pad2->SetTopMargin(0.0); pad2->SetGridx(); // vertical grid pad2->Draw(); pad2->cd(); // pad2 becomes the current pad gPad->SetLeftMargin(margl); gPad->SetRightMargin(margr); gPad->SetBottomMargin(0.2); TMultiGraph *ratio = new TMultiGraph(); TGraphErrors *ratio1 = new TGraphErrors(datain,"%lg %*lg %*lg %lg %*lg"); ratio1->SetMarkerColor(kBlue); ratio1->SetLineColor(kBlue); ratio1->SetMarkerStyle(20); ratio1->SetMarkerSize(1.3); ratio1->SetLineWidth(line); ratio1->SetDrawOption("AP"); ratio->Add(ratio1); TGraphErrors *ratio2 = new TGraphErrors(datain,"%lg %*lg %*lg %*lg %lg"); ratio2->SetMarkerColor(kRed); ratio2->SetLineColor(kRed); ratio2->SetMarkerStyle(21); ratio2->SetMarkerSize(1.3); ratio2->SetLineWidth(line); ratio2->SetDrawOption("P"); ratio->Add(ratio2); ratio->Draw("ALP"); ratio->SetTitle(""); ratio->SetTitle(" "); ratio->Draw("ALP"); ratio->GetXaxis()->SetLimits(xl1,xl2); ratio->GetXaxis()->SetLabelFont(43); ratio->GetXaxis()->SetLabelSize(20); ratio->GetYaxis()->SetLabelFont(43); ratio->GetYaxis()->SetLabelSize(20); ratio->GetXaxis()->SetTitleFont(43); ratio->GetXaxis()->SetTitleSize(20); ratio->GetYaxis()->SetTitleFont(43); ratio->GetYaxis()->SetTitleSize(20); ratio->GetXaxis()->SetTitle("Year"); ratio->GetXaxis()->SetTitleOffset(3.5); ratio->GetYaxis()->SetTitle("Percentage Increase"); ratio->GetYaxis()->SetTitleOffset(offy); float threshold = 0; auto lnThreshold = new TLine(xl1, threshold, xl2 ,threshold); lnThreshold->SetLineColor(kRed); lnThreshold->SetLineStyle(10); lnThreshold->SetLineWidth(1.); // maybe lnThreshold->Draw(); gPad->Update(); c01->Modified(); c01->Update(); Int_t bin1r= ratio->GetXaxis()->FindBin(1); Int_t bin2r= ratio->GetXaxis()->FindBin(2); Int_t bin3r= ratio->GetXaxis()->FindBin(3); Int_t bin4r= ratio->GetXaxis()->FindBin(4); Int_t bin5r= ratio->GetXaxis()->FindBin(5); ratio->GetHistogram()->GetXaxis()->SetBinLabel(bin1,"2016/17"); gPad->Update(); ratio->GetXaxis()->ChangeLabel(bin1r, 45, 0.02, 31, -1, -1,Form("2016/17")); gPad->Update(); ratio->GetXaxis()->ChangeLabel(bin2r, 45, 0.02, 31, -1, -1,Form("2017/18")); gPad->Update(); ratio->GetXaxis()->ChangeLabel(bin3r, 45, 0.02, 31, -1, -1,Form("2018/19")); gPad->Update(); ratio->GetXaxis()->ChangeLabel(bin4r, 45, 0.02, 31, -1, -1,Form("2019/20")); gPad->Update(); ratio->GetXaxis()->ChangeLabel(bin5r, 45, 0.02, 31, -1, -1,Form("2020/21")); gPad->Update(); gPad->Update(); // t->AddText(""); // t->Draw(); c01->Modified(); c01->Update(); c01->Print(dataout); }