3

有谁知道在 CERN 的 ROOT 程序中向 TGraph 添加第二个 x 轴的方法或代码?我一直在搜索根网站,它的文档几乎总是让我感到困惑。我需要的只是一个数据图,但是顶部的第二个 X 轴的值是底部 x 轴值的函数。它基本上是如此懒惰的人不必将底部x轴的数字转换为顶部x轴。

举个简单的例子(如果我不清楚)

假设您有一条正弦曲线,它是 theta 的某个函数。在顶部的 x 轴上,我们可以有度数,而在底部,我们可以有 360 度的弧度,对应于 2pi 弧度...

任何帮助,将不胜感激!

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

这是一个显示如何进行的示例。 https://root.cern/doc/master/twoscales_8C.html

于 2015-03-02T15:39:00.323 回答
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 的主要作者之一),所以我认为你不能有两个 x 轴。

来源: http ://root.cern.ch/phpBB3/viewtopic.php?f=3&t=7110

于 2012-07-15T03:27:11.470 回答