Logo ROOT  
Reference Guide
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Loading...
Searching...
No Matches
gr007_multigraph.C
Go to the documentation of this file.
1/// \file
2/// \ingroup tutorial_graphs
3/// \notebook
4/// \preview TMultiGraph is used to combine multiple graphs into one plot.
5/// Allowing to overlay different graphs can be useful for comparing different datasets
6/// or for plotting multiple related graphs on the same canvas.
7///
8/// \macro_image
9/// \macro_code
10///
11/// \author Rene Brun
12
13
14void gr007_multigraph() {
16 auto c1 = new TCanvas("c1","multigraph",700,500);
17 c1->SetGrid();
18
19 //Initialize a TMultiGraph to hold multiple graphs
20 //This ensures the entire dataset from all added graphs is visible without manual range adjustments.
21 auto mg = new TMultiGraph();
22
23 //Create first graph
24 const Int_t n1 = 10;
25 Double_t px1[] = {-0.1, 0.05, 0.25, 0.35, 0.5, 0.61,0.7,0.85,0.89,0.95};
26 Double_t py1[] = {-1,2.9,5.6,7.4,9,9.6,8.7,6.3,4.5,1};
27 Double_t ex1[] = {.05,.1,.07,.07,.04,.05,.06,.07,.08,.05};
28 Double_t ey1[] = {.8,.7,.6,.5,.4,.4,.5,.6,.7,.8};
29 auto gr1 = new TGraphErrors(n1,px1,py1,ex1,ey1);
30 gr1->SetMarkerColor(kBlue);
31 gr1->SetMarkerStyle(21);
32
33 gr1->Fit("gaus","q");
34 auto func1 = (TF1 *) gr1->GetListOfFunctions()->FindObject("gaus");
35 func1->SetLineColor(kBlue);
36
37 //Add the first graph to the multigraph
38 mg->Add(gr1);
39
40 //Create second graph
41 const Int_t n2 = 10;
42 Float_t x2[] = {-0.28, 0.005, 0.19, 0.29, 0.45, 0.56,0.65,0.80,0.90,1.01};
43 Float_t y2[] = {2.1,3.86,7,9,10,10.55,9.64,7.26,5.42,2};
44 Float_t ex2[] = {.04,.12,.08,.06,.05,.04,.07,.06,.08,.04};
45 Float_t ey2[] = {.6,.8,.7,.4,.3,.3,.4,.5,.6,.7};
46 auto gr2 = new TGraphErrors(n2,x2,y2,ex2,ey2);
47 gr2->SetMarkerColor(kRed);
48 gr2->SetMarkerStyle(20);
49
50 gr2->Fit("pol5","q");
51 auto func2 = (TF1 *) gr2->GetListOfFunctions()->FindObject("pol5");
52 func2->SetLineColor(kRed);
53 func2->SetLineStyle(2);
54
55 //Add the second graph to the multigraph
56 mg->Add(gr2);
57
58 mg->Draw("ap");
59
60 //Force drawing of canvas to generate the fit TPaveStats
61 c1->Update();
62
63 auto stats1 = (TPaveStats*) gr1->GetListOfFunctions()->FindObject("stats");
64 auto stats2 = (TPaveStats*) gr2->GetListOfFunctions()->FindObject("stats");
65
66 if (stats1 && stats2) {
67 stats1->SetTextColor(kBlue);
68 stats2->SetTextColor(kRed);
69 stats1->SetX1NDC(0.12); stats1->SetX2NDC(0.32); stats1->SetY1NDC(0.82);
70 stats2->SetX1NDC(0.72); stats2->SetX2NDC(0.92); stats2->SetY1NDC(0.75);
71 c1->Modified();
72 }
73}
int Int_t
Definition RtypesCore.h:45
float Float_t
Definition RtypesCore.h:57
double Double_t
Definition RtypesCore.h:59
@ kRed
Definition Rtypes.h:66
@ kBlue
Definition Rtypes.h:66
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Option_t Option_t TPoint TPoint const char x2
Option_t Option_t TPoint TPoint const char y2
R__EXTERN TStyle * gStyle
Definition TStyle.h:442
The Canvas class.
Definition TCanvas.h:23
1-Dim function class
Definition TF1.h:233
A TGraphErrors is a TGraph with error bars.
A TMultiGraph is a collection of TGraph (or derived) objects.
Definition TMultiGraph.h:34
The histogram statistics painter class.
Definition TPaveStats.h:18
void SetOptFit(Int_t fit=1)
The type of information about fit parameters printed in the histogram statistics box can be selected ...
Definition TStyle.cxx:1595
return c1
Definition legend1.C:41