【问题标题】:Adding a second x axis to a TGraph in the CERN ROOT program在 CERN ROOT 程序中向 TGraph 添加第二个 x 轴
【发布时间】:2012-07-04 04:43:33
【问题描述】:

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

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

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

任何帮助将不胜感激!

【问题讨论】:

    标签: root-framework


    【解决方案1】:

    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 documentation 了解更多示例。

    【讨论】:

    【解决方案2】:

    (我之前的回答已被删除,因为它只是一个指向下面列出作为参考的网站的链接。我希望这更符合社区准则。)

    我认为这可能会满足您的需求。

    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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2014-04-12
        • 1970-01-01
        • 2015-12-16
        • 2015-11-13
        • 2012-05-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多