Logo ROOT  
Reference Guide
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Loading...
Searching...
No Matches
gr003_errors2.C
Go to the documentation of this file.
1/// \file
2/// \ingroup tutorial_graphs
3/// \notebook -js
4/// \preview Create and draw two graphs with error bars, superposed on the same canvas
5///
6/// We first draw an empty frame with the axes, then draw the graphs on top of it
7/// Note that the graphs should have the same or very close ranges (in both axis),
8/// otherwise they may not be visible in the frame.
9///
10/// Alternatively, an automatic axis scaling can be achieved via a
11/// [TMultiGraph](https://root.cern/doc/master/classTMultiGraph.html)
12///
13/// See the [TGraphErrors documentation](https://root.cern/doc/master/classTGraphErrors.html)
14///
15/// \macro_image
16/// \macro_code
17/// \author Rene Brun
18
19void gr003_errors2() {
20 TCanvas *c1 = new TCanvas("c1","2 graphs with errors",200,10,700,500);
21 c1->SetGrid();
22
23 // draw a frame to define the range
24 TH1F *hr = c1->DrawFrame(-0.4,0,1.2,12);
25 hr->SetXTitle("X title");
26 hr->SetYTitle("Y title");
27 c1->GetFrame()->SetBorderSize(12);
28
29 // create first graph
30 // We will use the constructor requiring: the number of points, arrays containing the x-and y-axis values, and arrays with the x- andy-axis errors
31 const Int_t n1 = 10;
32 Double_t xval1[] = {-0.22, 0.05, 0.25, 0.35, 0.5, 0.61,0.7,0.85,0.89,0.95};
33 Double_t yval1[] = {1,2.9,5.6,7.4,9,9.6,8.7,6.3,4.5,1};
34 Double_t ex1[] = {.05,.1,.07,.07,.04,.05,.06,.07,.08,.05};
35 Double_t ey1[] = {.8,.7,.6,.5,.4,.4,.5,.6,.7,.8};
36 // If all x-axis errors should zero, just provide a single 0 in place of ex1
38 gr1->SetMarkerColor(kBlue);
39 gr1->SetMarkerStyle(21);
40 // Since we already have a frame in the canvas, we draw the graph without the option "A" (which draws axes for this graph)
41 gr1->Draw("LP");
42
43 // create second graph
44 const Int_t n2 = 10;
45 Float_t xval2[] = {-0.28, 0.005, 0.19, 0.29, 0.45, 0.56,0.65,0.80,0.90,1.01};
46 Float_t yval2[] = {0.82,3.86,7,9,10,10.55,9.64,7.26,5.42,2};
47 Float_t ex2[] = {.04,.12,.08,.06,.05,.04,.07,.06,.08,.04};
48 Float_t ey2[] = {.6,.8,.7,.4,.3,.3,.4,.5,.6,.7};
50 gr2->SetMarkerColor(kRed);
51 gr2->SetMarkerStyle(20);
52 gr2->Draw("LP");
53}
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.
The Canvas class.
Definition TCanvas.h:23
A TGraphErrors is a TGraph with error bars.
1-D histogram with a float per channel (see TH1 documentation)
Definition TH1.h:645
return c1
Definition legend1.C:41