この文書の現在のバージョンと選択したバージョンの差分を表示します。
次のリビジョン | 前のリビジョン | ||
ja:root:tcanvas [2014/04/02 11:59] kota 作成 |
ja:root:tcanvas [2014/05/23 06:18] (現在) kota [Canvas の作成] |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
- | ====== TCanvas ====== | + | ====== キャンバスの設定・装飾 ====== |
---- | ---- | ||
+ | ===== Canvas の作成 ===== | ||
+ | * Canvas を作成(TCanvas クラスのインスタンスを作成) | ||
+ | <code c_mac> | ||
+ | TCanvas *c = new TCanvas("c","c",600,500);//TCanvas(const char* name, const char* title, Int_t ww, Int_t wh) | ||
+ | </code> | ||
+ | * サイズはピクセル単位 | ||
+ | * ただしこれはメニューやウインドウの枠を含んだ大きさである。実際の図自体の大きさはこれよりも小さくなってしまっている。 | ||
+ | * menue bar で24pixel , 周囲の枠で2pixel とられている。 | ||
+ | * 描画部分の大きさを指定したい場合は、以下のようにする | ||
+ | <code c_mac> | ||
+ | Int_t w = 600; | ||
+ | Int_t h = 600; | ||
+ | TCanvas * c1 = new TCanvas("c", "c", w, h); | ||
+ | c->SetWindowSize(w + (w - c->GetWw()), h + (h - c->GetWh())); | ||
+ | |||
+ | c->Modified(); | ||
+ | c->Update(); //サイズ変更を反映 | ||
+ | </code> | ||
+ | * バッチモード(ディスプレイに表示させない、後で c->SaveAs("c.png") とかする)では、単に | ||
+ | <code c_mac> | ||
+ | c->SetCanvasSize(w,h); | ||
+ | </code> | ||
+ | とすればよい(試してないのであってるかどうか知らん) | ||
+ | |||
+ | {{:ja:root:window_canvas.png?800|}} | ||
+ | |||
+ | |||
+ | * canvas(青枠)の左下がNDCの原点(0,0),右上が(1,1)となっている。 | ||
+ | * histogramの枠はデフォルトでNDCで0.1ずつマージンが設けられている。(以下で確認可) | ||
+ | <code c_mac> | ||
+ | gStyle->GetPadTopMargin() | ||
+ | gStyle->GetPadBottomMargin() | ||
+ | gStyle->GetPadRightMargin() | ||
+ | gStyle->GetPadLeftMargin() | ||
+ | </code> | ||
+ | * histogramの枠のマージンは以下のようにして変更可能 | ||
+ | <code c_mac> | ||
+ | gStyle->SetPadTopMargin(0.01)//全体を一括して変更 | ||
+ | gPad->SetBottomMargin(0.2) //それぞれのpadで変更 | ||
+ | </code> | ||
+ | |||
+ | * 上手く使えば統計boxなどをヒストグラムの枠の外に出せる。 | ||
+ | |||
+ | ---- | ||
===== Canvas の分割 ===== | ===== Canvas の分割 ===== | ||
* Canvasをまず横に2つに分割し、さらにその左半分を上下に2つに分割する。 | * Canvasをまず横に2つに分割し、さらにその左半分を上下に2つに分割する。 | ||
<code c_mac> | <code c_mac> | ||
TCanvas *c=new TCanvas("c","c",800,400); | TCanvas *c=new TCanvas("c","c",800,400); | ||
- | c0->Divide(2,1); | + | c->Divide(2,1); |
- | c0->cd(1); | + | c->cd(1); |
// 1番のcanvasをさらに分割 | // 1番のcanvasをさらに分割 | ||
ライン 16: | ライン 60: | ||
c1->Divide(1,2); | c1->Divide(1,2); | ||
</code> | </code> | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ===== ディスプレイのサイズを知る ===== | ||
+ | * TCanvasのサイズを決めるのに有用か | ||
+ | <code c_mac> | ||
+ | gClient->GetDisplayHeight() | ||
+ | gClient->GetDisplayWidth() | ||
+ | </code> | ||
+ | * ちなみにMBA 13インチで幅1440、高さ878だった | ||
+ | * 外部ディスプレイ(23インチ)を付けた状態では、1080,3360と表示された。(足されてる?) | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | ===== 要素 ===== | ||
+ | * むしろ軸の範疇 | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | ===== gPad ===== | ||
+ | |||
+ | * 今いるキャンバス(c->cd(1)した先とか)を指す | ||
+ | |||
+ | <code c_mac> | ||
+ | gPad->SetRightMargin(0.08) ; | ||
+ | gPad->SetLeftMargin(0.08) ; | ||
+ | gPad->SetTopMargin(0.02) ; | ||
+ | gPad->SetBottomMargin(0.02) ; | ||
+ | | ||
+ | gPad->SetGridx(1) ; | ||
+ | gPad->SetGridy(1) ; | ||
+ | </code> | ||
+ | |||