3

CERN の ROOT プログラムで 2 番目の x 軸を TGraph に追加する方法またはコードを知っている人はいますか? 私はルート Web サイトを検索してきましたが、そのドキュメントはほとんどの場合、私を混乱させます。私が必要とするのは、データの 1 つのプロットだけですが、その値が下の x 軸の値の関数である上の 2 番目の X 軸です。基本的に怠け者は、下の x 軸の数値を上の x 軸に変換する必要はありません。

簡単な例(明確でない場合)

シータの関数である正弦曲線があるとします。上部の x 軸では度を表すことができ、下部では 2pi rad に対応する 360 度のラジアンを表すことができます...

どんな助けでも大歓迎です!

4

3 に答える 3

2

TGaxis は、必要な場所に追加の軸を描画するために探しているクラスです。パッドのワールド座標を取得すると、そのように重ね合わせることができます。lowhighを適切な制限に置き換えます。

// your graph code here...
TGraph->Draw("AP");    

TGaxis *axis = new TGaxis(gPad->GetUxmin(),gPad->GetUymax(),gPad->GetUxmax(),gPad->GetUymax(),low,high,510,"+L");
axis->Draw();

その他の例については、 TGaxis のドキュメントを参照してください。

于 2013-07-31T17:22:21.857 に答える
0

(以前の回答は、以下の参照としてリストされているサイトへのリンクに過ぎなかったため、削除されました。これがコミュニティ ガイドラインに沿っていることを願っています。)

これはあなたが望むことをするかもしれないと思います。

void axis2() {
   TH1F *h = new TH1F("h","test",30,-3,3);
   h->FillRandom("gaus",10000);
   h->Draw();
   TText t;
   t.SetTextSize(0.02);
   t.SetTextAlign(22);
   Double_t yt = - h->GetMaximum()/15.;   
   for (Int_t i=1;i<=30;i++) t.DrawText(h->GetBinCenter(i),yt,Form("%d",i%10));

}

別のタクシーを作成するわけではありませんが、軸の同じ位置にテキストを描画する方法を示しています。答えは Rene Brun 自身 (root の主な作成者の 1 人) からのものなので、2 つの x 軸を持つことはできないと思います。

ソース: http://root.cern.ch/phpBB3/viewtopic.php?f=3&t=7110

于 2012-07-15T03:27:11.470 に答える