RE: multiple graphs with different axes..

From: Olivier Couet <Olivier.Couet_at_cern.ch>
Date: Wed, 23 Mar 2011 14:27:02 +0000


Add:

hframe->GetYaxis()->SetTickLength(0);

After line 60

From: owner-roottalk_at_root.cern.ch [mailto:owner-roottalk_at_root.cern.ch] On Behalf Of Zoltan Szillasi Sent: Wednesday, March 23, 2011 3:21 PM
To: roottalk_at_root.cern.ch
Subject: RE: [ROOT] multiple graphs with different axes..

Dear Olivier,

Yes it runs fine on my machine, too, but if I change th 1200 to 1300 in line 58, I still see both axes on the left side.

Cheers,

                      Z

________________________________

From: Olivier Couet
Sent: 23 March 2011 15:05
To: Zoltan Szillasi; roottalk_at_root.cern.ch Subject: RE: [ROOT] multiple graphs with different axes.. Dear Zoltan,

Is this macro Ok for you ? (see attachment)

Olivier

From: owner-roottalk_at_root.cern.ch [mailto:owner-roottalk_at_root.cern.ch] On Behalf Of Zoltan Szillasi Sent: Wednesday, March 23, 2011 2:38 PM
To: roottalk_at_root.cern.ch
Subject: RE: [ROOT] multiple graphs with different axes..

Dear Olivier,

During the last week we exchanged some e-mails concerning the probably incorrect axis appearence when multiple graphs are displayed with different scales (axes). What is Your opinion, how could I get solution for this problem?

Best Wishes,

                                 Zoltan

________________________________

From: Zoltan Szillasi
Sent: 16 March 2011 07:23
To: roottalk_at_root.cern.ch
Subject: RE: [ROOT] multiple graphs with different axes..

Dear Olivier,

Well, the right axis displays corrcet, but the one on the left seems to be the two scales superimposed rather. I attached two images: one is taken on my Xp with root v5.26, while the other was made with root v1.18 on my office machine. Both shows this kind of axis. Do You see the same with your root version?

Cheers,

                    Zoltan

________________________________

From: Olivier Couet
Sent: 15 March 2011 17:48
To: Zoltan Szillasi; roottalk_at_root.cern.ch Subject: Re: [ROOT] multiple graphs with different axes.. I see two vertical axis.
One black on the left and one red on the right. Is it not what you want ?

From: Zoltan Szillasi <Zoltan.Szillasi_at_cern.ch<mailto:Zoltan.Szillasi_at_cern.ch>> Date: Sun, 13 Mar 2011 21:00:45 +0000
To: "roottalk_at_root.cern.ch<mailto:roottalk_at_root.cern.ch>" <roottalk_at_root.cern.ch<mailto:roottalk_at_root.cern.ch>> Subject: [ROOT] multiple graphs with different axes..

Dear All,

I would like to draw two graphs superimposed on the same canvas, but with different Y axes. I found a good example, but the ticks of the second graph appear despite that 'A' is not mentioned in the Draw options. Do You know how could I get rid of it? I'm running 5.28.00 under Windows Xp. This problem is also seen under 5.26 Win version.

Here is the example:

 void diffScales(){
   gROOT->Reset();
   c1 = new TCanvas("c1","gerrors2",200,10,700,500);    TPad *pad = new TPad("pad","",0,0,1,1);

   pad->SetFillColor(42);
   pad->SetGrid();
   pad->Draw();
   pad->cd();


// draw a frame to define the range
   TH1F *hr = c1->DrawFrame(-0.4,0,1.2,12);
   hr->SetXTitle("X title");
   hr->SetYTitle("Y title");
   pad->GetFrame()->SetFillColor(21);
   pad->GetFrame()->SetBorderSize(12);


// create first graph

   Int_t n1 = 10;
   Double_t x1[]  = {-0.22, 0.05, 0.25, 0.35, 0.5, 0.61,0.7,0.85,0.89,0.95};
   Double_t y1[]  = {1,2.9,5.6,7.4,9,9.6,8.7,6.3,4.5,1};
   Double_t ex1[] = {.05,.1,.07,.07,.04,.05,.06,.07,.08,.05};
   Double_t ey1[] = {.8,.7,.6,.5,.4,.4,.5,.6,.7,.8};
   gr1 = new TGraphErrors(n1,x1,y1,ex1,ey1);
   gr1->SetMarkerColor(kBlue);
   gr1->SetMarkerStyle(21);
   gr1->Draw("LP");


// create second graph

   Int_t n2 = 10;
   Float_t x2[]  = {-0.28, 0.005, 0.19, 0.29, 0.45, 0.56,0.65,0.80,0.90,1.01};
   Float_t y2[]  = {0.82,3.86,7,9,10,10.55,9.64,7.26,5.42,2};
   Float_t ex2[] = {.04,.12,.08,.06,.05,.04,.07,.06,.08,.04};
   Float_t ey2[] = {.6,.8,.7,.4,.3,.3,.4,.5,.6,.7};


   for (Int_t i=0;i<n2;i++) {
      y2[i] *= 100;
      ey2[i] *= 100;

   }
   //create a transparent pad drawn on top of the main pad    c1->cd();

   TPad *overlay = new TPad("overlay","",0,0,1,1);

   overlay->SetFillStyle(4000);
   overlay->SetFillColor(0);
   overlay->SetFrameFillStyle(4000);
   overlay->Draw();
   overlay->cd();


   gr2 = new TGraphErrors(n2,x2,y2,ex2,ey2);

   gr2->SetMarkerColor(kRed);
   gr2->SetMarkerStyle(20);
   gr2->SetName("gr2");
   Double_t xmin = pad->GetUxmin();
   Double_t ymin = 0;

   Double_t xmax = pad->GetUxmax();
   Double_t ymax = 1300;
   TH1F *hframe = overlay->DrawFrame(xmin,ymin,xmax,ymax);    hframe->GetXaxis()->SetLabelOffset(99);    hframe->GetYaxis()->SetLabelOffset(99);    gr2->Draw("LP");

   //Draw an axis on the right side
   TGaxis *axis = new TGaxis(xmax,ymin,xmax, ymax,ymin,ymax,510,"+L");

   axis->SetLineColor(kRed);
   axis->SetLabelColor(kRed);
   axis->Draw();

}

Thanks in advace!

Cheers,

                   Zoltan
Received on Wed Mar 23 2011 - 15:27:07 CET

This archive was generated by hypermail 2.2.0 : Wed Mar 23 2011 - 17:50:01 CET