h2->Draw("sames")とかして重ね書きした時に、TLegendで凡例をつくってグラフに情報を加えてもいいんだけど、せっかくデフォルトでつくってくれる統計情報を使いたい場合。まずh1->Draw();して、次にh1->Draw("sames");すると、h2の統計ボックスがh1のものに重なってh1のものが見えなくなってしまう。マウスで動かせばいいんだけどこれをスクリプトでやりたい。統計ボックスを取得して場所を変えるようにすればいいのは簡単に想像がつくけど、調べてみたら案外めんどうだった。
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が
ぬるぽしか返してくれなくてエラーになる。コマンドラインだと要らないらしい。
デフォルトだと、片方上下を
st->SetY1NDC(0.6);
st->SetY2NDC(0.75);
のように設定すると邪魔にならず大きさも同じくらいになる気がする。(ちょっと小さいようにも見えるのでその辺は微調整。)
キャストすること自体と、キャストするクラス名と、SetX1NDCなどのメソッド名を忘れそうだけど、たんにmeanとかエントリー数とかだけを表示したいだけならわざわざレジェンドつくるよりは簡単。
最終更新:2013年01月31日 19:12