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"); }