Opcje rysowania histogramów

Histogramy posiadają wiele opcji rysowania, opcje te często można łączyć. Wybrane opcje przedstawiono poniżej:

Opcja Opis
E rysuj słupki błędów
HIST nie rysuj słupków błędów
SAME rysuj z innym histogramem
TEXT zawartość binów w formie tekstu
X+ oś X na górze
Y+ oś Y po prawej
C rysuj gładką linię między binami
E0 rysuj słupki błędów dla binów z wejściami
E1 słupki błędów z prostopadłymi liniami na końcach
E2 słupki błędów z prostokątami
BAR słupki pionowe
HBAR słupki poziome
P rysuj markery
P0 rysuj markery (również w pustych binach)
L rysuj linię między binami
PIE wykres kołowy

Więcej opcji można znaleźć szukając dokumentacji odnośnie "THistPainter". Wybrane opcje rysowania pokazano na rysunku poniżej:

Rys. 1. Wybrane opcje rysowania

 Kolory

Kolory histogramów są używane przez metody typu SetFillColor, SetLineColor i SetMarkerColor. Wartości kolorów są zdefiniowane w tablicy poniżej:

Rys. 2. Tablica kolorów.

Style wypełnienia

Style wypełnienia decydują, co jest rysowane "pod histogramem". Istnieje kilka typów wypełnienia i tak np. 1001 oznacza pełne wypełnienie. W przypadku pozostałych typów definiuje się je liczbą typu 3ijk.

I tak:

  • i (1-9) definiuje odległość między liniami wypełnienia
  • j (0-9) określa kąt między 0 a 90 stopniami
    • 0  = 0
    • 1 = 10
    • 2 = 20
    • 3 = 30
    • 4 = 45
    • 5  - nie rysowane
    • 6 = 60
    • 7 = 70
    • 8 = 80
    • 9 = 90
  • k (0-9) określa kąt między 90 a 180 stopni
    • 0 = 180
    • 1 = 170
    • 2 =160
    • 3 = 150
    • 4 = 135
    • 5 - nie rysowane
    • 6 = 120
    • 7 = 110
    • 8 = 100
    • 9 = 90

Style te są zaprezentowane poniżej:

Rys. 3. Tablica stylów wypełnienia (źródło https://root.cern.ch/doc/master/classTAttFill.html).

Style Linii i Markerów

Najważniejsze metody ustawiania linii to

  • SetLineStyle
  • SetLineColor
  • SetLineWidth

Rys. 4 Tablica grubości linii (źródło: https://root.cern.ch/doc/master/classTAttLine.html)

Rys. 5. Tablica stylu linii (źródło https://root.cern.ch/doc/master/classTAttLine.html)

W przypadku markerów najważniejsze metody do ich manipulacji to:

  • SetMarkerStyle
  • SetMarkerColor
  • SetMarkerSize

Rys. 6. Tablica stylów markerów (źródło https://root.cern.ch/doc/master/classTAttMarker.html).

 W przypadku "otwartych" markerów można zwiększyć grubość ich linii poprzez używanie jeszcze większych numerów styli (więcej na https://root.cern.ch/doc/master/classTAttMarker.html).

Spróbujmy więc połączyć dotychczasową wiedzę i narysować dwa histogramy z różnymi kolorami wypełnienia itd. Należy tutaj zwrócić uwagę że przy rysowaniu histogramu samo np. ustawienie markera nie oznacza, że zostanie on narysowany, dlatego np. w przypadku histogramu h1 rysowanie jest z opcjami P+L+F (rysuj marker, linię i wypełnienie) i SAME+L (rysuj histogram "na histogramie" z wygładzonymi liniami pomiędzy binami).

void histogram(){
	TH1D *h1 = new TH1D("a","a",20,-1,1);
	TH1D *h2 = new TH1D("a","a",20,-1,1);
	for(int i=0;i<1000;i++){
		h1->Fill(gRandom->Gaus(0,0.5));
		h2->Fill(gRandom->Gaus(0,1));
	}
	h1->SetFillStyle(3344);
	h1->SetFillColor(kGreen+2);
	h1->SetLineStyle(7);
	h1->SetMarkerColor(kBlue);
	h1->SetMarkerStyle(kFullStar);

	h2->SetLineColor(kRed);
	h2->SetLineWidth(3);

	h1->Draw("PFL");
	h2->Draw("SAME+C");
}