2011-06-10 2 views
4

그래프를 만들어 이미지로 저장하려고합니다. 나는 ROOT를 사용해야합니다. 나는Cern ROOT로 그래프 작성

TGraph graph = TGraph(xvect, yvect); 

와 그래프를 생성하지만 지금은이 PNG (또는 다른 이미지 형식)로 저장하는 방법에 갇혔어요. 내가 차이를 만드는 경우 리눅스 머신을 사용하고 있습니다. 또한 누군가가 이미지 파일에 그래프를 작성하는 방법을 설명하는 문서에 대한 링크를 알고 있다면 거기에서 직접 알아낼 수는 있지만 지금까지 문서에서 그 그래프를 찾는 데 실패했습니다.

+2

마이크로 블랙홀을 조심. –

+2

ROOT에서 정의되지 않은 동작을 사용하면 마이크로 블랙홀이 발생합니다. – rubenvb

+1

Ancient post.하지만이 줄은 스택에 임시 TGraph를 만든 다음 아무 이유없이 "그래프"변수에 다시 할당 할 때 복사합니다. 하나의 작은 TGraph 객체로 큰 오버 헤드가 아니라 큰 객체 또는 수천 개의 객체가 있으면 어리석습니다. 그냥 이렇게하십시오 : TGraph 그래프 (xvect, yvect). 정렬 된 :-) – andybuckley

답변

3
TCanvas*c1 = new TCanvas(); 
graph->Draw(); 
c1->Print("name.png"); 

확실히 cint 셸에서 작동합니다. 컴파일 된 코드에서 작동하려면 미세 조정이 필요할 수 있습니다.

이 모든 기본적인 내용은 온라인 tutorialsHowTos에서 철저하게 다루어집니다. 일반적으로 the documentation을 참조하십시오.

+3

아마 당신은'graph-> Draw ("AP")' –

+0

과 같은 것을 사용할 필요가 있습니다. 모든 것을 newering하는 ROOTer 강박 관념을 이해하지 못합니다 : TCanvas c1; ... c1.Print (...); c1.SaveAs (...); 등등. 보너스가 짧고 메모리가 누출되지 않습니다 .-) – andybuckley

+0

@andybuckley이 기사에서 카고 컬트의 난센스는 많이 바뀌지 만 ... 그 이유는 문서가 그렇게하기 때문입니다. 그리고 * 모든 것은 모든 것이 리플렉션의 특정 양을 얻기 위해 모든 이름의 트랙을 유지하기 위해 개인 힙에 영구 스토리지를 할당하는 'TObject'로부터 거의 모든 것이 상속되기 때문에 그 반사 시스템의 일부 기능은 힙 할당에 의존하는 것 같습니다 . 비록 제가 억류에 대해 아주 명확한 적이 없으며 오해 될 수도 있습니다. – dmckee

0
TCanvas*cvs = new TCanvas(); 
graph->Draw(); 
cvs->SaveAs("name.png"); 

SaveAs는 루트에 그래프를 저장하는 데 필요한 기능입니다. dmckee가 말한 것처럼 온라인 문서는 매우 유용합니다. class list

0

전체 매크로는 다음과 같습니다

TCanvas *c1 = new TCanvas(); 
const Int_t n = 10; 
Double_t xvect[n]; 
Double_t yvect[n]; 
.... initialize xvect and y vect 
TGraph graph = TGraph(n, xvect, yvect); 
graph->Draw("al"); // draw the graph as a line (see the ROOT wen site for more option) 
c1->SaveAs("c1.png"); // many other formats are available (PS, PDF, JPEG etc...)