2012-07-03 1 views
2

CERN의 ROOT 프로그램에서 TGraph에 두 번째 x 축을 추가하는 방법이나 코드를 아는 사람이 있습니까? 필자는 루트 웹 사이트를 검색해 왔으며 그 문서는 거의 항상 나를 혼란스럽게합니다. 내가 필요한 것은 단지 하나의 데이터 플롯이지만 두 번째 X 축은 맨 아래 x 축 값의 함수입니다. 그 기본적으로 그렇게 게으른 사람들은 x 축 아래 x 축의 숫자를 x 축으로 변환하지 않아도됩니다.CERN ROOT 프로그램의 TGraph에 두 번째 x 축 추가

간단한 예를 들어

(내가 분명히 않네 경우)는 세타의 일부 함수 인 사인 곡선을 말해봐. 상단 x 축에는 각도가있을 수 있지만 바닥에는 2pi rad에 해당하는 360deg의 라디안을 가질 수 있습니다.

도움이 될만한 점이 있습니까?

답변

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

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을 확인하십시오.