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

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

部門/ROOT/統計ボックスをいじくる」(2013/01/31 (木) 19:12:04) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

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); }} のように設定すると邪魔にならず大きさも同じくらいになる気がする。(ちょっと小さいようにも見えるのでその辺は微調整。) キャストすること自体と、キャストするクラス名と、SetX1NDCなどのメソッド名を忘れそうだけど、たんにmeanとかエントリー数とかだけを表示したいだけならわざわざレジェンドつくるよりは簡単。 実は[[阪大理学部科学計算・開発サークル -Circle for Science Caluculation and Development- - 部門/ROOT/重ね描き>http://www47.atwiki.jp/cscd/pages/90.html]]でもう書いてた。 #comment_num2()
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); }} のように設定すると邪魔にならず大きさも同じくらいになる気がする。(ちょっと小さいようにも見えるのでその辺は微調整。) キャストすること自体と、キャストするクラス名と、SetX1NDCなどのメソッド名を忘れそうだけど、たんにmeanとかエントリー数とかだけを表示したいだけならわざわざレジェンドつくるよりは簡単。 実は [[部門/ROOT/重ね描き>http://www47.atwiki.jp/cscd/pages/90.html]] でもう書いてた。 #comment_num2()

表示オプション

横に並べて表示:
変化行の前後のみ表示: