Logo ROOT  
Reference Guide
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Loading...
Searching...
No Matches
gr001_simple.C
Go to the documentation of this file.
1/// \file
2/// \ingroup tutorial_graphs
3/// \notebook
4/// \preview This tutorial demonstrates how to create simple graphs in ROOT. The example is divided into two sections:
5/// - The first section plots data generated from arrays.
6/// - The second section plots data read from a text file.
7///
8/// \macro_image
9/// \macro_code
10///
11/// \author Rene Brun
12
13#include<fstream> //Include the library for reading the data file
14
15void gr001_simple() {
16 TCanvas *c1 = new TCanvas("c1","Two simple graphs",200,10,700,500);
17
18 c1->Divide(2,1); //Dividing the canvas in subpads for distinguishing the two examples, [See documentation](https://root.cern/doc/master/classTCanvas.html)
19
20 //FIRST EXAMPLE (Available data)
21 c1->cd(1);
22
23 const Int_t n = 20; //Fill the arrays x and y with the data points
24 Double_t x[n], y[n];
25 for (Int_t i=0;i<n;i++) {
26 x[i] = i*0.1;
27 y[i] = 10*sin(x[i]+0.2);
28 printf(" i %i %f %f \n",i,x[i],y[i]);
29 }
30
31 TGraph *gr1 = new TGraph(n,x,y); //Create a TGraph object, storing the number of data n and the x, y variables
32
33 //Set the color, width and style for the markers and line
34 gr1->SetLineColor(2);
35 gr1->SetLineWidth(4);
36 gr1->SetMarkerColor(4);
37 gr1->SetMarkerStyle(21);
38 gr1->SetTitle("Graph from available data"); //Choose title for the graph
39 gr1->GetXaxis()->SetTitle("X title"); //Choose title for the axis
40 gr1->GetYaxis()->SetTitle("Y title");
41
42 //Uncomment the following line to set a custom range for the x-axis (respectively for the y-axis):
43 //gr1->GetXaxis()->SetRangeUser(0, 1.8);
44
45 gr1->Draw("ACP"); //"A" draw axes, "C" = draw a smooth line through the markers (optional) and "P" = draw markers for data points
46 //Optional customization can be done on a ROOT interactive session
47
48
49 //SECOND EXAMPLE (Data stored in a text file)
50 c1->cd(2);
51
52 const Int_t m = 20; //Known number of data points in the file
53 Double_t w[m], z[m];
54
55 std::ifstream file(gROOT->GetTutorialDir() + "/visualisation/graphs/data_basic.txt"); // Open the data file
56
57 // Use a for loop to read the data
58 for (Int_t i = 0; i < m; i++) {
59 file >> w[i] >> z[i]; //Fill the arrays with the data from the file
60 printf(" i %i %f %f \n",i,w[i],z[i]);
61 }
62
63 file.close(); //Close the file after reading
64
65 TGraph *gr2 = new TGraph(m, w, z); //Create a TGraph object for the file data
66 gr2->SetLineColor(4);
67 gr2->SetLineWidth(2);
68 gr2->SetMarkerColor(2);
69 gr2->SetMarkerStyle(20);
70 gr2->SetTitle("Graph from data file");
71 gr2->GetXaxis()->SetTitle("W title");
72 gr2->GetYaxis()->SetTitle("Z title");
73
74
75 gr2->Draw("ACP");
76}
77
int Int_t
Definition RtypesCore.h:45
double Double_t
Definition RtypesCore.h:59
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
#define gROOT
Definition TROOT.h:406
The Canvas class.
Definition TCanvas.h:23
A TGraph is an object made of two arrays X and Y with npoints each.
Definition TGraph.h:41
Double_t y[n]
Definition legend1.C:17
return c1
Definition legend1.C:41
Double_t x[n]
Definition legend1.C:17
const Int_t n
Definition legend1.C:16
TMarker m
Definition textangle.C:8