Re: [ROOT] How to setting Y axis on a TGraph picture with slider

From: Rene Brun (Rene.Brun@cern.ch)
Date: Tue Jun 20 2000 - 18:50:16 MEST


Hi Yongzhao,

You can change the vertical scale (min/max) on a canvas with TH1
or TGraph directly using the left button of your mouse.

Calling TGraph::SetMaximum via the context menu may not work if you
use the option "AL" to draw the graph. The option "A" forces a 
recomputation of the min/max of the TGraph.

Rene Brun

Yongzhao Zhou wrote:
> 
> Dear Rooters,
> A macro based slider example on root v2.23 is
> 
> //=============macro slider.C=============================
> {
>    gROOT->Reset();
> 
> // --- setting canvas and pad
>    c1 = new TCanvas("c1","A Simple Graph Example",200,10,700,500);
> 
>    c1->SetFillColor(42);
>    c1->SetGridx();
>    c1->SetGridy();
>    pad1 = new TPad("pad1","c1",0.1,0.1,0.9,0.9,18);
> 
>    pad1->SetGrid();
>    pad1->SetBottomMargin(0.3);
>    pad1->SetLeftMargin(.3);
>    pad1->SetRightMargin(.3);
>    pad1->Draw();
> 
> // --- Draw a histogram plot
>    pad1->cd();
> 
>    Int_t n = 20;
>    Float_t x[n], y[n];
>    for (Int_t i=0;i<n;i++) {
>      x[i] = i*0.1;
>      y[i] = 10*sin(x[i]+0.2);
>    }
>    Float_t xmin = 0;
>    Float_t xmax = 2;
>    Float_t ymax = 11;
>    TH1F *hist = new TH1F("hist","a simple graph",100,xmin,xmax);
>    hist->SetMaximum(15);
>    hist->SetMinimum(-2);
>    hist->Draw();
>    hist->SetXTitle("X title");
>    hist->SetYTitle("Y title");
> 
>    // --- Draw a graph
>    gr = new TGraph(n,x,y);
>    gr->SetFillColor(1);
>    gr->SetLineColor(2);
>    gr->SetLineWidth(4);
>    gr->SetMarkerColor(4);
>    gr->SetMarkerStyle(21);
>    gr->SetTitle("a simple graph");
>    gr->Draw("LP");
> 
> // --- Create one slider in main canvas
>    pad1->Update();
>    c1->Update();
>    TSlider *xslider = new
>    TSlider("xslider","x",xmin,ymax,xmax,ymax+1.7);
>    xslider->SetMethod(".x grSliderAction.C");
> }
> 
> /*
> // --- This macro is another C codes
> //===========macro grSliderAction.C==============
> {
>    Int_t nx = hist->GetXaxis()->GetNbins();
>    Int_t binxmin = nx*xslider->GetMinimum();
>    Int_t binxmax = nx*xslider->GetMaximum();
>    hist->GetXaxis()->SetRange(binxmin,binxmax);
> 
>   c1->Modified();
>    c1->Update();
> }
> */
> 
> But the function SetMaximum on a pop-up menu by clicking with the righ
> moose button on the TGraph picture can not set and change the Y axis.
> I don't know why.
> Thanks for any help.
> Best Regards,
> Yongzhao Zhou
> 
> ------
> Yongzhao Zhou, KLOE, LNF, INFN, Italy
> Tel:39-06-94032696 Fax:39-06-94032427



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