Oblicz histogram

histogram zbiór n
(histogram zbiór n min max norm)

Oblicza rozkład wartości ze zbioru, tworząc n równomiernie rozmieszczonych przedziałów. Zakres przedziałów histogramu może zostać ustalony przy pomocy opcjonalnych argumentów min i max (użyj wartości "auto dla argumentu min jesli jedynie wartośc max ma zostać ustalona). Jeśli podany zostanie argument norm, pole histogramu zostanie znormalizowane do tej wartości.

Utworzony histogram jest tablicą 4-elementowych tablic, każda odpowiadająca jednemu przedziałowi histogramu. Znaczenie elementów dla każdego przedziału jest następujące: położenie środka przedziału na osi X; wysokość rozkładu w danym przedziale; błąd x (połowa szerokości przedziału); błąd y (pierwiastek z liczby wartości zawartych w danym przedziale, opcjonalnie znormalizowany).

W POOL dostępna jest klasa plot_histo oraz funkcja make_histo, pomocne w tworzeniu wykresów histogramów; są one zaimlementowane w pliku make_plots.l. Opis ich użycia zawierają poniższe przykłady.

Przykład 1:

"a := (rnorm 10 2 1000)
print (histogram :a 10 5 15)

Rezultat wykonania:

{ {5.5 17 0.5 4.12310562561766}
{6.5 46 0.5 6.78232998312527}
{7.5 114 0.5 10.6770782520313}
{8.5 150 0.5 12.2474487139159}
{9.5 194 0.5 13.9283882771841}
{10.5 186 0.5 13.6381816969859}
{11.5 140 0.5 11.8321595661992}
{12.5 82 0.5 9.05538513813742}
{13.5 41 0.5 6.40312423743285}
{14.5 16 0.5 4} }

Przykład 2:

include "make_plots.l ;zawiera f-cje make_histo setrange i autoscale
"a := (rnorm 10 2 1000)
"h := (make_histo :a 10 5 15) ;10 przedziałów, zakres 5-15

"cname := world @ :h ;odczytaj nazwę okna
print :cname

setrange :cname {0 20} {} ;ustaw zadany zakres (tylko x)
(autoscale "Histogram "y;automatycznie dopasuj skalę (tylko y)

"cfg := thing word :cname "_canvas_cfg ;zmienna konfiguracyjna okna
:cfg,"min_y := 0

wait 1000
(set_nbins 20) @ :h ;zmiana liczby przedziałów histogramu

Rezultat wykonania:

histogram

Przykład 3:

include "make_plots.l ;zawiera klasę plot_histo i f-cję setrange

to bars :d :n :c [:min 0] [:max 10] ;klasa bars na podstawie plot_histo
  use (plot_histo :d :n :min :max 1)
  :style,"xerr := "none             ;nie pokazuj błędów w osi x
  setti "bar                        ;słupkowy styl wykresu
  setr (:max - :min) / :n           ;promień określa szerokość słupka
  (settc :c 20)

  to resize :new_n
    setr (:max - :min) / :new_n ;dopasuj szerokość słupka
    set_nbins :new_n ;zmień liczbę przedziałów (f-cja klasy bazowej)
  end
end

"j := 5000  ;ilość danych w histogramie
"k := 3     ;liczba histogramów
"h := []    ;lista histogramów
repeat :k [ ;utwórz histogramy w pętli (równolegle)
  push :h (anewp "pool $bars (rnorm repcount repcount/2 :j) 100 100*repcount)
]

setrange "pool {0 10} {0 1}

"s := (slider "|n =| {70 4} {10 200 1} 100)
setonchange :s [(resize getvalue :s) @ :h;zmiana binowania (równolegle we wszystkich histogramach)
ht

Rezultat wykonania:

Wykresy histogramów o liczbie przedziałów sterowanej suwakiem.

Zobacz także:

Spis treści