この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
ja:root:axis [2014/05/21 07:23] kota [軸TitleがLabelと被ってしまうとき] |
ja:root:axis [2018/10/20 18:38] (現在) kota [Grid 関係] |
||
---|---|---|---|
ライン 30: | ライン 30: | ||
*gPad%%->%%SetLogy() でも同じ | *gPad%%->%%SetLogy() でも同じ | ||
*通常軸に戻すには gPad%%->%%SetLogy(0) | *通常軸に戻すには gPad%%->%%SetLogy(0) | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ==== 軸のラベルをtextにする ==== | ||
+ | === 元のラベルを飛ばして、手動でtextを配置する方法 === | ||
+ | <code cpp> | ||
+ | hist->GetXaxis()->SetLabelOffset(100); // 範囲外へ元の数字のラベルを飛ばしてしまう | ||
+ | hist->GetXaxis()->SetNdivisions(3,1,1); | ||
+ | TLatex *label = new TLatex(); | ||
+ | label->SetTextSize(0.07); | ||
+ | label->DrawLatexNDC(0.18,0.04,"K_{L}#rightarrow3#pi^{0}");// TLatexでtextを書いていく | ||
+ | label->DrawLatexNDC(0.45,0.04,"K_{L}#rightarrow2#pi^{0}"); | ||
+ | label->DrawLatexNDC(0.72,0.04,"K_{L}#rightarrow2#gamma"); | ||
+ | </code> | ||
+ | |||
+ | === SetBinLabel functionを使う方法 === | ||
+ | <code cpp> | ||
+ | hist->GetXaxis()->SetBinLabel(1,"K_{L}#rightarrow3#pi^{0}");//第一引数はibin | ||
+ | hist->GetXaxis()->SetBinLabel(2,"K_{L}#rightarrow2#pi^{0}");// ibin=0 はunderflow | ||
+ | hist->GetXaxis()->SetBinLabel(3,"K_{L}#rightarrow2#gamma"); // ibin=nbin+1 はoverflow を表す | ||
+ | hist->GetXaxis()->SetLabelSize(0.07); | ||
+ | </code> | ||
+ | |||
+ | === TPad::DrawFrame を使った場合 === | ||
+ | DrawFrame functionで生成されるhistogramは、実はnbin=1000をもつ。 | ||
+ | 必要なbin数にまでrebinしてまとめてやった上でSetBinLabelを呼べば良い。 | ||
+ | <code cpp> | ||
+ | TString LabelText[3] = { "K_{L}#rightarrow3#pi^{0}", | ||
+ | "K_{L}#rightarrow2#pi^{0}", | ||
+ | "K_{L}#rightarrow2#gamma" }; | ||
+ | |||
+ | TCanvas *c = new TCanvas("c","c",700,500); | ||
+ | TH1F *frame = (TH1F*)c->DrawFrame(0,3,3,4.5); | ||
+ | |||
+ | frame->GetXaxis()->SetNdivisions(3,1,1); | ||
+ | frame->Rebin( frame->GetNbinsX()/3 ); | ||
+ | |||
+ | for(Int_t i = 0 ; i < 3 ; ++i) | ||
+ | frame->GetXaxis()->SetBinLabel(i+1,LabelText[i]); | ||
+ | |||
+ | frame->GetXaxis()->SetLabelSize(0.07); | ||
+ | </code> | ||
+ | ---- | ||
+ | |||
==== 軸の色を変える ==== | ==== 軸の色を変える ==== | ||
ライン 42: | ライン 86: | ||
==== 軸の範囲を固定する ==== | ==== 軸の範囲を固定する ==== | ||
+ | === 1DヒストグラムでYを固定 === | ||
+ | <code c_mac> | ||
+ | hist->SetMinimum(0); | ||
+ | hist->SetMaximum(100); | ||
+ | </code> | ||
+ | |||
+ | === 2DヒストグラムでZを固定 === | ||
<code c_mac> | <code c_mac> | ||
hist->GetZaxis()->SetRangeUser(0.,1000); | hist->GetZaxis()->SetRangeUser(0.,1000); | ||
ライン 65: | ライン 116: | ||
// N2 : N1で分割した中の各区画をN2分割する | // N2 : N1で分割した中の各区画をN2分割する | ||
// N3 : N2で分割した中の各区画をさらにN3分割する | // N3 : N2で分割した中の各区画をさらにN3分割する | ||
+ | hist->GetXaxis()->SetNdivisions(Int_t n=510, Bool_t optim=kTRUE); | ||
+ | //histogram毎に設定することも可。 | ||
+ | //optim=kTrueだと、指定した分割に近い区切りで、rootが勝手に最適化した区切りが採用される | ||
+ | //optim=kFalseだと、指定した通りの区切りに設定される。 | ||
+ | hist->GetXaxis()->SetNdivisions(Int_t N1, Int_t N2, Int_t N3, Bool_t optim=kTRUE); | ||
+ | //こんなのもある。この方がわかりやすいかも。 | ||
+ | |||
+ | hist->SetTickLength(Float_t length = 0.02, Option_t* axis = "X"); | ||
gStyle->SetTickLength(Float_t length = 0.03, Option_t* axis = "X"); | gStyle->SetTickLength(Float_t length = 0.03, Option_t* axis = "X"); | ||
ライン 71: | ライン 130: | ||
//内側を正の向きとし、負号の数を入れると外向きになる。 | //内側を正の向きとし、負号の数を入れると外向きになる。 | ||
- | |||
</code> | </code> | ||
ライン 108: | ライン 166: | ||
gStyle->SetTitleH(Float_t h = 0); //Title box の高さ | gStyle->SetTitleH(Float_t h = 0); //Title box の高さ | ||
- | gStyle->SetTitleAlign(Int_t a = 13); | + | gStyle->SetTitleAlign(Int_t a = 13);// a=10*h+v, h=1,2,3 for left, center, top, v=1,2,3 for bottom, middle, top |
+ | // gStyle->SetTitleX(x)などでtitle boxのどこをxに合わせるかを指定する。 | ||
gStyle->SetTitleFillColor(Color_t color = 1); | gStyle->SetTitleFillColor(Color_t color = 1); | ||
gStyle->SetTitleTextColor(Color_t color = 1); | gStyle->SetTitleTextColor(Color_t color = 1); | ||
gStyle->SetTitleStyle(Style_t style = 1001); | gStyle->SetTitleStyle(Style_t style = 1001); | ||
gStyle->SetTitleFontSize(Float_t size = 0); | gStyle->SetTitleFontSize(Float_t size = 0); | ||
- | gStyle->SetTitleBorderSize(Width_t size = 2); | + | gStyle->SetTitleBorderSize(Width_t size = 2);// タイトルの枠線 |
ライン 144: | ライン 203: | ||
*precision は 2:サイズ変更、回転可能 ,1:不能 | *precision は 2:サイズ変更、回転可能 ,1:不能 | ||
*軸は "XY" のように複数同時に選択することもできる。 | *軸は "XY" のように複数同時に選択することもできる。 | ||
+ | |||
+ | |||
+ | hist->GetXaxis()->SetBinLabel(ibin,"A"); | ||
+ | hist->GetXaxis()->SetBinLabel(ibin+1,"B"); | ||
+ | などすると、binに名前をつけられる。 | ||
+ | (SetBinContentsなどと同じで、ibin=1がfirst binを指す) | ||
ライン 157: | ライン 222: | ||
gStyle->SetGridColor(Color_t color = 0); // グリッド線の色を指定 | gStyle->SetGridColor(Color_t color = 0); // グリッド線の色を指定 | ||
gStyle->SetGridWidth(Width_t width = 1); // グリッド線の線幅を指定(ピクセル単位) | gStyle->SetGridWidth(Width_t width = 1); // グリッド線の線幅を指定(ピクセル単位) | ||
+ | |||
+ | ///// pad毎に指定したい場合 | ||
+ | gPad->SetGrid(1,0);//// x(縦線)を表示(1)、y(横線)を非表示(0) | ||
+ | gPad->SetGridx(1);///// 一方だけいじるfunctionもある。 | ||
+ | gPad->SetGridy(1); | ||
</code> | </code> | ||
ライン 180: | ライン 250: | ||
</code> | </code> | ||
とすればよい。 | とすればよい。 | ||
+ | <note tip> | ||
+ | gPad%%->%%SetLeftMargin(… などをやった場合、図に修正前の線が残ることがあった。\\ | ||
+ | この線は図をクリックしたりすると消えた。 | ||
+ | |||
+ | そのときは、 | ||
+ | c->Modified(); | ||
+ | c->Update(); | ||
+ | gPad->Modified(); | ||
+ | gPad->Update(); | ||
+ | と二重で Modified & Update をやることで解決した。 | ||
+ | </note> | ||
* 解決法2:Titleのサイズを小さくする | * 解決法2:Titleのサイズを小さくする | ||
ライン 186: | ライン 267: | ||
</code> | </code> | ||
- | * 解決法3:labelを軸に寄せる | + | * 解決法3:Labelを軸に寄せる |
<code c_mac> | <code c_mac> | ||
hist1->GetYaxis()->SetLabelOffset(0.) | hist1->GetYaxis()->SetLabelOffset(0.) | ||
hist1->GetYaxis()->SetLabelOffset(-0.03) //負にすれば軸に食い込む | hist1->GetYaxis()->SetLabelOffset(-0.03) //負にすれば軸に食い込む | ||
+ | </code> | ||
+ | |||
+ | * 解決法4:Labelのサイズを小さくする | ||
+ | <code c_mac> | ||
+ | h->GetYaxis()->SetLabelSize(0.03); | ||
</code> | </code> | ||
ライン 198: | ライン 284: | ||
</code> | </code> | ||
としてキロ単位にしたりするとよいかも。 | としてキロ単位にしたりするとよいかも。 | ||
- |