2012-07-03 51 views
2

沒有人知道在CERN的ROOT程序中爲TGraph添加第二個x軸的方法或代碼嗎?我一直在搜索根網站和它的文檔幾乎總是讓我困惑。我需要的僅僅是一個數據圖,而是頂部的第二個X軸,其值是底部x軸'值的函數。它基本上非常懶惰的人不必從底部x軸的數字轉換到頂部x軸。在CERN ROOT程序中向TGraph添加第二個x軸

舉個簡單的例子(如果我不是清楚)

假設你有一個正弦曲線是theta的一些功能。在頂部的X軸上,我們可以有度數,而在底部,我們可以有360度的弧度,對應着2π弧度...

任何幫助,將不勝感激!

回答

0

(A前面的答案,因爲它只是一個以表列如下參考該網站的鏈接我已經被刪除了。我希望這是更符合社區指導方針。)

我想,這可能會做什麼你要。

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本人(根的主要作者之一),所以我不認爲你可以有兩個x軸。

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

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