部門 > ROOT > 統計ボックスをいじくる

「部門/ROOT/統計ボックスをいじくる」の編集履歴(バックアップ)一覧に戻る

部門/ROOT/統計ボックスをいじくる - (2013/01/17 (木) 22:16:21) のソース

h2->Draw("sames")とかして重ね書きした時に、TLegendで凡例をつくってグラフに情報を加えてもいいんだけど、せっかくデフォルトでつくってくれる統計情報を使いたい場合。まずh1->Draw();して、次にh1->Draw("sames");すると、h2の統計ボックスがh1のものに重なってh1のものが見えなくなってしまう。マウスで動かせばいいんだけどこれをスクリプトでやりたい。統計ボックスを取得して場所を変えるようにすればいいのは簡単に想像がつくけど、調べてみたら案外めんどうだった。

最初に [[RootTalk: Re: Stats box and Draw("same")>http://root.cern.ch/root/roottalk/roottalk99/2959.html]] このリンクが見つかって、これはDraw()のsamesオプションが出来た当時のものらしい。これは情報が不足しててできなくてこの通りやってもできなかった。(gPad->Update();)が必要。

結果からいうと [[TPaveStats>http://root.cern.ch/root/html/TPaveStats.html]] に必要な情報は書いてあって例えば以下のようにやればいい。

#highlight(){{h1->Draw();
gPad->Update();
TPaveStats *st = (TPaveStats*)h1->FindObject("stats");
st->SetX1NDC(newx1); //new x start position
st->SetX2NDC(newx2); //new x end position
h2->Draw("sames");
}}
gPad->Update();をしないとstが[[ぬるぽ>http://ja.wikipedia.org/wiki/Null#C.E3.81.AE.E3.83.8C.E3.83.AB.E3.83.9D.E3.82.A4.E3.83.B3.E3.82.BF]]しか返してくれなくてエラーになる。コマンドラインだと要らないらしい。

デフォルトだと、片方上下を
#highlight(){{st->SetY1NDC(0.6); 
st->SetY2NDC(0.75); }}
のように設定すると邪魔にならず大きさも同じくらいになる気がする。(ちょっと小さいようにも見えるのでその辺は微調整。)




#comment_num2()