この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
ja:root:axis [2016/12/11 07:11] kota [Tick 関係(軸目盛)] |
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); | ||
ライン 71: | ライン 122: | ||
hist->GetXaxis()->SetNdivisions(Int_t N1, Int_t N2, Int_t N3, Bool_t optim=kTRUE); | 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"); | ||
ライン 113: | ライン 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);// タイトルの枠線 |
ライン 168: | ライン 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> | ||