Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
gr003_errors2.py
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, Jamie Gooding
18
19import numpy as np
20import ROOT
21
22c1 = ROOT.TCanvas("c1", "2 graphs with errors", 200, 10, 700, 500)
24
25# draw a frame to define the range
26hr = c1.DrawFrame(-0.4, 0, 1.2, 12)
27hr.SetXTitle("X title")
28hr.SetYTitle("Y title")
30
31# create first graph
32# 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
33n1 = 10
34xval1 = np.array([-0.22, 0.05, 0.25, 0.35, 0.5, 0.61, 0.7, 0.85, 0.89, 0.95])
35yval1 = np.array([1, 2.9, 5.6, 7.4, 9, 9.6, 8.7, 6.3, 4.5, 1])
36ex1 = np.array([0.05, 0.1, 0.07, 0.07, 0.04, 0.05, 0.06, 0.07, 0.08, 0.05])
37ey1 = np.array([0.8, 0.7, 0.6, 0.5, 0.4, 0.4, 0.5, 0.6, 0.7, 0.8])
38# If all x-axis errors should zero, just provide a single 0 in place of ex1
39gr1 = ROOT.TGraphErrors(n1, xval1, yval1, ex1, ey1)
42# Since we already have a frame in the canvas, we draw the graph without the option "A" (which draws axes for this graph)
43gr1.Draw("LP")
44
45# create second graph
46n2 = 10
47xval2 = np.array([-0.28, 0.005, 0.19, 0.29, 0.45, 0.56, 0.65, 0.80, 0.90, 1.01])
48yval2 = np.array([0.82, 3.86, 7, 9, 10, 10.55, 9.64, 7.26, 5.42, 2])
49ex2 = np.array([0.04, 0.12, 0.08, 0.06, 0.05, 0.04, 0.07, 0.06, 0.08, 0.04])
50ey2 = np.array([0.6, 0.8, 0.7, 0.4, 0.3, 0.3, 0.4, 0.5, 0.6, 0.7])
51gr2 = ROOT.TGraphErrors(n2, xval2, yval2, ex2, ey2)
54gr2.Draw("LP")
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
c SetBorderSize(2)