Dear Prof. Rene Brun, Thank you for your help. I tried your example and got a TGraph picture with two sliders. The sliders can be work very well but the Y scaler can not be changed by left button of the mouse on the context menu to select SetMaximum. Is it true that function changing Y scaler can not work together with slider on a picture of TGraph or TH1? Best Regards, Yongzhao Zhou ------ Yongzhao Zhou, KLOE, LNF, INFN, Italy Tel:39-06-94032696 Fax:39-06-94032427 On Wed, 21 Jun 2000, Rene Brun wrote: > Yongzhao Zhou wrote: > > > > Dear Prof. Rene Brun, > > Sure, I can change Y scale on a canvas with TGraph by left button of the > > mouse using option "ALP" or "AL" to draw a TGraph but in that case the > > slider will not be worked. > > Is there any function directly to change X scaler of TGraph as action > > of TH1 in the macro grSliderAction.C of my code? Because I did not find a > > function directly to change the X scaler of a TGraph so I have to use a > > TH1 plot and draw a TGraph picture on it to make slider working on TGraph > > picture. > > Best Regards, > > Yongzhao Zhou > > > > ------ > > Here is an example with sliders and a TGraph > do > root > .x gslider.C > > //------------macro gslider.C > { > //Example of macro with two sliders > > TCanvas *c1 = new TCanvas("c1","A Simple Graph Example",200,10,700,500); > c1->SetFillColor(38); > > TPad *pad = new TPad("pad","lego pad",0.1,0.1,0.98,0.98); > pad->SetFillColor(33); > pad->Draw(); > pad->cd(); > // gStyle->SetFrameFillColor(42); > pad->SetFillColor(42); > pad->SetGrid(); > pad->DrawFrame(0,0,2,11); > > const Int_t n = 20; > Double_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); > } > gr = new TGraph(n,x,y); > gr->SetLineColor(2); > gr->SetLineWidth(4); > gr->SetMarkerColor(4); > gr->SetMarkerStyle(21); > gr->SetTitle("a simple graph"); > gr->Draw("CP"); > > > //Create two sliders in main canvas. When button1 will be released > //the macro xysliderAction.C will be called. > c1->cd(); > TSlider *xslider = new TSlider("xslider","x",0.1,0.02,0.98,0.08); > xslider->SetMethod(".x gsliderAction.C"); > TSlider *yslider = new TSlider("yslider","y",0.02,0.1,0.06,0.98); > yslider->SetMethod(".x gsliderAction.C"); > } > > //-----------------macro gsliderAction.C > { > Float_t xrange = 2; > Float_t yrange = 11; > Float_t xmin = xrange*xslider->GetMinimum(); > Float_t xmax = xrange*xslider->GetMaximum(); > Float_t ymin = yrange*yslider->GetMinimum(); > Float_t ymax = yrange*yslider->GetMaximum(); > pad->cd(); > pad->DrawFrame(xmin,ymin,xmax,ymax); > gr->Draw("cp"); > c1->Update(); > } >
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:28 MET