W przeciwieństwie do histogramów grafy nie są projektowane tak aby zawierały zliczenia - a raczej w celu prezentowania dowolnego typu danych. Zasadniczo mamy tu dwie główne klasy - TGraph czyli zwykły grafi i TGraphErrors (graf z niepewnościami). Zacznijmy od najprostszego grafu:
void grafy_1(){ TCanvas *c1 = new TCanvas("c1","Graph Example",200,10,700,500); const Int_t n = 20; Double_t x[n], y[n]; for (Int_t i=0;i<n;i++) { x[i] = i*0.1; y[i] = 10*sqrt(x[i])+0.3*x[i]; } TGraph *gr = new TGraph(n,x,y); gr->Draw("AC"); }
Najpierw tworzone jest okienko TCanvas (to nie jest konieczne), następnie tworzona jest tablica za danymi punktów (x oraz y) która jest wypełniana. Następnie tworzony jest i rysowany histogram. Alternatywną metodą wprowadzania danych do grafu jest SetPoint(i,x,y) gdzie podajemy kolejno numer puntu, wartość na OX a następnie na OY. W domyślnej opcji algorytmy próbują rysować linie między punktami jeśli więc stawi się punkt który nie jest "po kolei" jak np. gr->SetPoint(124,2.3,-4.5); można uzyskać coś takiego:
Aby otrzymać liczbę punktów w grafie należy użyć metody GetN(), metody RemovePoint można natomiast używać do usuwania punktów - metody te mogą się okazać przydatne w przypadku konieczności dalszej manipulacji wykresem.
Histogram z błędami
TGraphErrors to kolejny typ grafu. W przeciwieństwie do prostego TGraph umożliwia reprezentowanie niepewności, poniżej przykładowy kod tworzący taki histogram:
void grafy_1(){ TCanvas *c1 = new TCanvas(); c1->SetGrid(); const Int_t n = 6; Double_t x[n] = {0.1,0.19,0.31,0.42,0.49,0.59}; Double_t y[n] = {10,20,35,39,51,61}; Double_t ex[n] = {0.01,0.01,0.02,0.02,0.05,0.05}; Double_t ey[n] ={5,8,5,5,5,5}; TGraphErrors *gr = new TGraphErrors(n,x,y,ex,ey); gr->SetTitle("Error graph"); gr->SetMarkerColor(kRed); gr->SetMarkerStyle(21); gr->GetXaxis()->SetTitle("X"); gr->Draw("ALP"); }
Który pozwoli wyświetlić coś takiego:
Grafika histogramów
Zasadniczo w wersji 6 ustawianie graficzne (markery, kolory linii) działają tak samo jak dla histogramów.