有谁知道在 CERN 的 ROOT 程序中向 TGraph 添加第二个 x 轴的方法或代码?我一直在搜索根网站,它的文档几乎总是让我感到困惑。我需要的只是一个数据图,但是顶部的第二个 X 轴的值是底部 x 轴值的函数。它基本上是如此懒惰的人不必将底部x轴的数字转换为顶部x轴。
举个简单的例子(如果我不清楚)
假设您有一条正弦曲线,它是 theta 的某个函数。在顶部的 x 轴上,我们可以有度数,而在底部,我们可以有 360 度的弧度,对应于 2pi 弧度...
任何帮助,将不胜感激!
有谁知道在 CERN 的 ROOT 程序中向 TGraph 添加第二个 x 轴的方法或代码?我一直在搜索根网站,它的文档几乎总是让我感到困惑。我需要的只是一个数据图,但是顶部的第二个 X 轴的值是底部 x 轴值的函数。它基本上是如此懒惰的人不必将底部x轴的数字转换为顶部x轴。
举个简单的例子(如果我不清楚)
假设您有一条正弦曲线,它是 theta 的某个函数。在顶部的 x 轴上,我们可以有度数,而在底部,我们可以有 360 度的弧度,对应于 2pi 弧度...
任何帮助,将不胜感激!
TGaxis 是您正在寻找的类,可以在任何您想要的地方绘制额外的轴。抓住你的垫子的世界坐标,然后你可以像这样叠加。替换low
和high
具有适当的限制。
// 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 文档以获取更多示例。
这是一个显示如何进行的示例。 https://root.cern/doc/master/twoscales_8C.html
(我之前的答案已被删除,因为它只是指向下面列出作为参考的网站的链接。我希望这更符合社区准则。)
我认为这可能会做你想要的。
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 轴。