Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
logscales.C
Go to the documentation of this file.
1 /// \file
2 /// \ingroup tutorial_hist
3 /// \notebook
4 /// Draw parametric functions with log scales.
5 ///
6 /// \macro_image
7 /// \macro_code
8 ///
9 /// \author Olivier Couet
10 
11 void logscales() {
12  TCanvas *c1 = new TCanvas("c1", "Various options on LOG scales plots",0,0,700,900);
13  c1->SetFillColor(30);
14 
15  TPad *pad1 = new TPad("pad1","pad1",0.03,0.62,0.50,0.92,32);
16  TPad *pad2 = new TPad("pad2","pad2",0.51,0.62,0.98,0.92,33);
17  TPad *pad3 = new TPad("pad3","pad3",0.03,0.02,0.97,0.535,38);
18  pad1->Draw(); pad2->Draw(); pad3->Draw();
19 
20  TPaveLabel *title = new TPaveLabel(0.1,0.94,0.9,0.98, "Various options on LOG scales plots");
21  title->SetFillColor(16);
22  title->SetTextFont(42);
23  title->Draw();
24 
25  TPaveText *pave = new TPaveText(0.1,0.55,0.9,0.61);
26  pave->SetFillColor(42);
27  pave->SetTextAlign(12);
28  pave->SetTextFont(42);
29  pave->AddText("When more Log labels are requested, the overlapping labels are removed");
30  pave->Draw();
31 
32  pad1->cd();
33  pad1->SetLogy();
34  pad1->SetGridy();
35  TF1 *f1 = new TF1("f1","x*sin(x)*exp(-0.1*x)+15",-10.,10.);
36  TF1 *f2 = new TF1("f2","(sin(x)+cos(x))**5+15",-10.,10.);
37  TF1 *f3 = new TF1("f3","(sin(x)/(x)-x*cos(x))+15",-10.,10.);
38  f1->SetLineWidth(1); f1->SetLineColor(2);
39  f2->SetLineWidth(1); f2->SetLineColor(3);
40  f3->SetLineWidth(1); f3->SetLineColor(4);
41  f1->Draw();
42  f2->Draw("same");
43  f3->Draw("same");
44  f1->GetYaxis()->SetMoreLogLabels();
45  TPaveText *pave1 = new TPaveText(-6,2,6,6);
46  pave1->SetFillColor(42);
47  pave1->SetTextAlign(12);
48  pave1->SetTextFont(42);
49  pave1->AddText("Log scale along Y axis.");
50  pave1->AddText("More Log labels requested.");
51  pave1->Draw();
52 
53  pad2->cd();
54  double x[10] = { 200, 300, 400, 500, 600, 650, 700, 710, 900,1000 };
55  double y[10] = { 200, 1000, 900, 400, 500, 250, 800, 150, 201, 220 };
56  TGraph *g_2 = new TGraph(10,x,y);
57  g_2->Draw("AL*");
58  g_2->SetMarkerColor(2);
59  g_2->GetYaxis()->SetMoreLogLabels();
60  g_2->GetYaxis()->SetNoExponent();
61  pad2->SetLogy();
62  g_2->GetXaxis()->SetMoreLogLabels();
63  pad2->SetLogx();
64  pad2->SetGridx();
65  TPaveText *pave2 = new TPaveText(150,80,500,180);
66  pave2->SetFillColor(42);
67  pave2->SetTextFont(42);
68  pave2->SetTextAlign(12);
69  pave2->AddText("Log scale along X and Y axis.");
70  pave2->AddText("More Log labels on both.");
71  pave2->AddText("No exponent along Y axis.");
72  pave2->Draw();
73 
74  pad3->cd();
75  pad3->SetGridx();
76  pad3->SetGridy();
77  pad3->SetLogy();
78  pad3->SetLogx();
79  TF1 *f4 = new TF1("f4a","x*sin(x+10)+25",1,21);
80  f4->SetLineWidth(1);
81  f4->Draw();
82  f4->SetNpx(200);
83  f4->GetYaxis()->SetMoreLogLabels();
84  f4->GetXaxis()->SetMoreLogLabels();
85  f4 = new TF1("f4b","x*cos(x+10)*sin(x+10)+25",1,21);
86  f4->SetLineWidth(1); f4->Draw("same");
87  f4->SetNpx(200);
88  Int_t a = 20;
89  for (int i=a; i>=1; i--) {
90  f4 = new TF1(Form("f4b_%d",i),"x*sin(x+10)*[0]/[1]+25",1,21);
91  f4->SetParameter(0,i);
92  f4->SetParameter(1,a);
93  f4->SetNpx(200);
94  f4->SetLineWidth(1); f4->SetLineColor(i+10);
95  f4->Draw("same");
96  f4 = new TF1(Form("f4c_%d",i),"x*cos(x+10)*sin(x+10)*[0]/[1]+25",1,25);
97  f4->SetParameter(0,i);
98  f4->SetParameter(1,a);
99  f4->SetNpx(200);
100  f4->SetLineWidth(1); f4->SetLineColor(i+30); f4->Draw("same");
101  }
102  TPaveText *pave3 = new TPaveText(1.2,8,9,15);
103  pave3->SetFillColor(42);
104  pave3->AddText("Log scale along X and Y axis.");
105  pave3->SetTextFont(42);
106  pave3->SetTextAlign(12);
107  pave3->AddText("More Log labels on both.");
108  pave3->AddText("The labels have no exponents (they would be 0 or 1)");
109  pave3->Draw();
110 }