Re: Label on log axis

Rene Brun (Rene.Brun@cern.ch)
Sat, 1 May 1999 15:26:40 +0200 (METDST)


Hi Michal,
Your combination of canvas size and axis range give
effectively bad results. The Root axis algorithm must be
improved. I will look into this problem.
Meanwhile, I suggest you play a bit with both the
label offset and the label size as shown in your macro
with a few mods (indicated with //***)

Rene Brun


{
gROOT -> Reset();
TCanvas *cc1 = new TCanvas("cc1", "My Canvas", 800, 600);//***
gStyle -> SetTitleX(0.22);
gStyle -> SetTitleY(0.97);

gPad -> SetBottomMargin(0.15);
gPad -> SetLeftMargin(0.15);
gPad -> SetTicks();
gPad -> SetLogx();
gPad -> SetLogy();

// define plot ranges with histogram class

Float_t xxmin = 50;
Float_t xxmax = 999.0;//***
Float_t yymin = 1.0E-9;
Float_t yymax = 2.0E-6;

h2r = new TH2F("h2r", "Axis test", 2, xxmin, xxmax, 2, yymin, yymax);
Float_t labelSize = 0.025;
h2r -> GetXaxis() -> SetLabelOffset(-0.01);//***
h2r -> GetXaxis() -> SetLabelSize(labelSize);//***
h2r -> GetYaxis() -> SetLabelSize(labelSize);//***
h2r -> Draw();
}

On 28 Apr 1999 lijowski@cosray2.wustl.edu wrote:

>
> Hello,
>
> I cannot figure how to get nice labels on X axis on the plots
> generated by the attached macro.
> If I set Ndiv to 1 or -1 I get a single major tickmark at 100,
> a single tickmark at 500, and label at 500 and 1000.
> Any other value produces the same number of major and minor tickmarks
> and overlapping labels. I have been using ROOT 2.21/08.
>
> Regards,
>
> Michal Lijowski
>
> {
> gROOT -> Reset();
> TCanvas *cc1 = new TCanvas("cc1", "My Canvas", 600, 800);
> gStyle -> SetTitleX(0.22);
> gStyle -> SetTitleY(0.97);
>
> gPad -> SetBottomMargin(0.15);
> gPad -> SetLeftMargin(0.15);
> gPad -> SetTicks();
> gPad -> SetLogx();
> gPad -> SetLogy();
>
> // define plot ranges with histogram class
>
> Float_t xxmin = 50.0;
> Float_t xxmax = 1000.0;
> Float_t yymin = 1.0E-9;
> Float_t yymax = 2.0E-6;
>
> h2r = new TH2F("h2r", "Axis test", 2, xxmin, xxmax, 2, yymin, yymax);
> printf(" NDiv %d\n", h2r -> GetXaxis() -> GetNdivisions());
> h2r -> GetXaxis() -> SetNdivisions(-1);
> printf(" NDiv %d\n", h2r -> GetXaxis() -> GetNdivisions());
> h2r -> Draw();
> cc1 -> Update();
> }
>