Zwykle na rysunku umieszcza się więcej niż jeden histogram, czasem też trzeba coś dorysować. W przypadku potrzeby oznaczenia kilku histogramów używa się legendy (klasa TLegend) zaś jeśli chcemy dorysować jakiś punkt do histogramu należy użyć klasy TLatex.

Legendy

Zacznimy od klasy TLegend. Załóżmy, że mamy dwa histogramy, chcąc utworzyć legendę możemy użyć poniższego kodu.

void legendy(){
    gStyle->SetOptStat(0);//nie rysuj statystki
    TH1D *h1 = new TH1D("h1","h1",100,-1,1);
    TH1D *h2 = new TH1D("h2","h2",100,-1,1);
    for(int i=0;i<500;i++){
        h1->Fill(gRandom->Gaus(0, 0.1));
        h2->Fill(gRandom->Gaus(0.5,0.1));
    }
    h1->Draw();
    h1->SetMarkerColor(kRed);
    h1->SetLineColor(kRed);
    h1->SetMarkerStyle(kFullCircle);
    h2->Draw("SAME");
    h2->SetMarkerColor(kBlue);
    h2->SetLineColor(kBlue);
    h2->SetMarkerStyle(kFullCircle);
    TLegend *leg = new TLegend(0.15,0.5,0.4,0.9);
    leg->SetHeader("Legenda");//opcjonalne
    leg->AddEntry(h1, "h1","LP");
    leg->AddEntry(h2, "h2","P");
    leg->AddEntry((TObject*)0x0, "puste","");
    leg->Draw("SAME");
}

W tym kodzie najpierw wypełniane są losowymi liczbami dwa histogramy. Następnie zaś rysowana jest legenda i w konstruktorze podajemy kolejno punkty startowe X,Y i końcowe pola  legendy. W przypadku domyślnych ustawień marginesów (0.1,0.1) to lewy dolny róg histogramu a (0.9,0.9) to prawy górny róg histogramu, gdyż są to współrzędne bazujące na koordynatach pada na którym jest rysowany histogram.

Do histogramu można opcjonalnie dodać tytuł (SetHeader), zaś opisy poszczególnych histogramów dodaje się poprzez AddEntry. Metoda ta przyjmuje kilka parametrów:

  • wskaźnik na obiekt który chcemy opisać
  • opis obiektu
  • flaga opisująca jak należy reprezentować obiekt P - to marker, L - to linia a F - wypełnienie, przykładowo h1 jest rysowany z opcją LP dlatego rysowane jest kółko (marker histogramu) + linia, flaga dal h2 to jedynie P dlatego nie jest rysowana niebieska linia

W przykładzie pokazano również, że stosując wskaźnik na 0x0 (czy też nullptr) można wstawić sam opis do TLegend co jest przydatne gdy chce się grupowane dane pogrupować.

Teksty

TLatex służy do rysowania tekstu na histogramie, przykładowo załóżmy że chcemy umieścić jakiś wzór na rysunku, możemy do tego użyć kodu:

void legendy(){
    gStyle->SetOptStat(0);//nie rysuj statystki
    TH1D *h1 = new TH1D("h1","h1",100,-1,1);
    TH1D *h2 = new TH1D("h2","h2",100,-1,1);
    for(int i=0;i<500;i++){
        h1->Fill(gRandom->Gaus(0, 0.1));
        h2->Fill(gRandom->Gaus(0.5,0.1));
    }
    h1->Draw();
    h1->SetMarkerColor(kRed);
    h1->SetLineColor(kRed);
    h1->SetMarkerStyle(kFullCircle);
    h2->Draw("SAME");
    h2->SetMarkerColor(kBlue);
    h2->SetLineColor(kBlue);
    h2->SetMarkerStyle(kFullCircle);
    TLatex *ltx = new TLatex();
    ltx->DrawText(0.5, 0.5, "jakis tekst");
    ltx->SetTextColor(kGreen+2);
    ltx->DrawText(0, 25, "jakis tekst");
}

Należy tu zwrócić uwagę na pewną niekonsekwencję twórców - otóż tym razem zamiast używać współrzędnych "padowych" używa się współrzędnych "histogramowych". Z powodu użycia innej konwencji czarny tekst nie jest rysowany na środku padu a gdzieś na obrzeżach histogramu.

W sytuacji gdy musimy umieścić napis zawierający jakąś formułę matematyczną  należy ją wywołać nie poprzez TLatex::DrawText ale TLatex::DrawLatex oraz użyć notacji "ROOT'owego" latexu - co w dużym uproszczeniu oznacza zastąpienie '\' przez '#'. Tak więc chcąc np. napisać "kat Φ" zamiast TLatex::DrawText("kat \phi") należy użyć TLatex::DrawLatex("kat #phi").