Re: [ROOT] TGraph & SetMinimum

From: Jeff Hartnell (jeffrey.hartnell@physics.ox.ac.uk)
Date: Fri Dec 06 2002 - 22:51:48 MET


Hi Rene,
I've tracked down the problem. Doing what you suggest works BUT if you
then set the title on the axis it somehow resets the scale!!!

g->Draw("AP");
g->SetMinimum(0);

Works just fine but

g->Draw("AP");
g->SetMinimum(0);

g2->GetXaxis()->SetTitle("x value");

doesn't work and the scale gets reset.

See my macro below demonstrating the problem.

Cheers,
Jeff.

  Int_t height=2000;
  Int_t numPoints=10;

  TGraph* g=new TGraph(numPoints);
  TGraph* g2=new TGraph(numPoints);
  TGraph* g3=new TGraph(numPoints);
  TGraph* g4=new TGraph(numPoints);

  for (Int_t i=0;i<numPoints;i++){
    height+=100;
    g->SetPoint(i,i,height);
    g2->SetPoint(i,i,height);
    g3->SetPoint(i,i,height);
    g4->SetPoint(i,i,height);
  }

  TCanvas *c=new TCanvas("c","c",0,0,1200,800);
  c->SetFillColor(0);
  c->Divide(2,2);

  //first plot
  c->cd(1);
  g->Draw("AP");
  g->SetMinimum(0);
  g->SetTitle("Test plot - I work");
  g->SetMarkerStyle(3);
  g->SetMarkerColor(2);
  g->SetMarkerSize(0.2);

  //second plot
  c->cd(2);
  g2->Draw("AP");
  g2->SetMinimum(0);
  g2->SetTitle("Test plot - I don't work (x-axis matters)");
  g2->SetMarkerStyle(3);
  g2->SetMarkerColor(2);
  g2->SetMarkerSize(0.2);

  g2->GetXaxis()->SetTitle("x value");
  //g2->GetXaxis()->CenterTitle();

  //third plot
  c->cd(3);
  g3->Draw("AP");
  g3->SetMinimum(0);
  g3->SetTitle("Test plot - I don't work (y-axis matters)");
  g3->SetMarkerStyle(3);
  g3->SetMarkerColor(2);
  g3->SetMarkerSize(0.2);

  g3->GetXaxis()->SetTitle("x value");
  g3->GetXaxis()->CenterTitle();
  g3->GetYaxis()->SetTitle("height");
  g3->GetYaxis()->CenterTitle();

  //fourth plot
  c->cd(4);
  g4->Draw("AP");
  g4->SetMinimum(0);
  g4->SetTitle("Test plot - I work (SetMin last)");
  g4->SetMarkerStyle(3);
  g4->SetMarkerColor(2);
  g4->SetMarkerSize(0.2);

  g4->GetXaxis()->SetTitle("x value");
  g4->GetXaxis()->CenterTitle();
  g4->GetYaxis()->SetTitle("height");
  g4->GetYaxis()->CenterTitle();
  //call again right at the end to sort it out!!!!
  g4->SetMinimum(0);



********************************************
Jeffrey Hartnell, Oxford/RAL DPhil student.

Email: jeffrey.hartnell@physics.ox.ac.uk
Phone numbers, addresses etc on website:
http://www-pnp.physics.ox.ac.uk/~hartnell/
********************************************

----- Original Message -----
From: "Rene Brun" <brun@pcbrun.cern.ch>
To: "Jeff Hartnell" <jeffrey.hartnell@physics.ox.ac.uk>
Cc: <roottalk@cern.ch>
Sent: Friday, December 06, 2002 2:44 PM
Subject: Re: [ROOT] TGraph & SetMinimum


> Hi Jeff,
>
> What you do should work
>     g->Draw("ap");
>     g->SetMinimum(0);
>
> if not, please send me a short but running script showing the problem.
>
> Rene Brun
>
> On Fri, 6 Dec 2002, Jeff Hartnell wrote:
>
> > Hi,
> > It seems to be impossible to override the automatic axis scaling in
> > TGraph when you draw it with the "a" option.
> >
> > I found this in the digest:
> >
> > From: Rene Brun (Rene.Brun@cern.ch)
> > Date: Wed Mar 20 2002 - 10:33:17 MET
> >
> >   a.. Next message: Rene Brun: "Re: [ROOT] TGaxis"
> >   b.. Previous message: Rene Brun: "Re: [ROOT] TGeant3, TGeant4 from
> > AliSoft"
> >   c.. In reply to: Steffen Grohmann: "[ROOT] SetRangeUser Problem on
> > Y-axis"
> >   d.. Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
> >
>
> ----------------------------------------------------------------------
--
> > --------
> >
> >
> > Hi Steffen,
> >
> > When you use the option "a" in TAxis::Draw, the axis limits are
> > automatically recomputed from the range of the actual Y values.
> > You can force a max/min of the y axis via
TAxis::SetMaximum/SetMinimum.
> > An alternative solution is to use TPad::DrawFrame.
> >
> > Rene Brun
> >
> > but TAxis doesn't have SetMaximum or minimum does it?
> >
> > I do this:
> >
> > gAdcPhNear[l]->Draw("AP");
> > gAdcPhNear[l]->SetMinimum(0);
> >
> > but it still gets drawn with the minimum above zero. Why doesn't
this
> > work? Can it be made to work?
> >
> > Has anyone found a solution to this problem? I could always draw a
> > histogram first with the appropriate scale, but that's ugly!
> > Thanks,
> > Jeff.
> >
> > p.s. using latest root on redhat 7.3.1
> >
> >
>



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:22 MET