Re: [ROOT] Forcing axis to be orthonormal ?

From: Rene Brun (Rene.Brun@cern.ch)
Date: Fri Sep 15 2000 - 10:59:57 MEST


Hi Yannick,
The macro iso.C below shows two methods to achieve what you want.

Rene Brun

//-------------------------iso.C
{
   //method1. compute ymax to get a commensurate range
   // 1 pixel must correspond to the same range in x and y
   TCanvas c1("c1","c1",10,10,800,600);
   Float_t xmin = 0;
   Float_t xmax = 20;
   Float_t ymin = -2;
   Int_t npx = gPad->GetWw();
   Int_t npy = gPad->GetWh();
   Float_t ymax = ymin + (xmax-xmin)*npy/npx;
   TH2F h("h","",20,xmin,xmax,20,ymin,ymax);
   h.Draw();
   TArc a1(6,4,6);
   a1.Draw();
   
   //method2. set a square virtual canvas size in a non-square canvas 
   TCanvas c2("c2","c2",200,50,800,600);
   c2.SetCanvasSize(700,700);
   c2.DrawFrame(0,0,20,20);
   TArc a2(10,10,10);
   a2.Draw();
}

Patois Yannick wrote:
> 
> Hi,
> 
> When drawing a 2D plot, I have difficulties to impose exact
> orthonormality of the axis. I know I certainly can achieve this by
> computing length of each axis, plus looking at the pad geometry and then
> putting the scales accordingly...
> 
> Is there some fast and simple way to force orthonormality, for example
> by forcing the Y axis to conform to the setting of the X axis in a
> given Pad size ?
> 
> thanx for any help.
> 
>         Yannick
> 
> --
>  _/ Yannick Patois _________________ Address (home) __________________
> | irc(undernet): Garp on #france25+  | La Villa des Sciences           |
> | email : patois@ganil.fr            | 12, avenue de Cambridge         |
> | http://garp.feelingsurfer.net/     | 14200 Herouville-Saint-Clair    |
> | Tel/Fax-home:+33 (0)2 31 94 50 32  | FRANCE                          |



This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:32 MET