Документация Engee
Notebook

Гистограммы

Открыть пример в Engee

В данной демонстрации мы разберём возможности построения гистограмм в Engee.

Гистограмма – это способ представления табличных данных в виде столбчатой диаграммы.

Количественные соотношения некоторого показателя представлены в виде прямоугольников, площади которых пропорциональны. Чаще всего для удобства восприятия ширину прямоугольников берут одинаковую, при этом их высота определяет соотношения отображаемого параметра.

Теперь перейдём к реализации и начнём с подключения библиотеки визуализации и рассмотрим функцию histogram на примере самой простой визуализации гистограммы за счёт вектора случайных чисел с нормальным распределением.

In [ ]:
using Plots
In [ ]:
x = randn(10^3)
histogram(x)
Out[0]:

Количество столбцов гистограммы по умолчанию определяется формулой Фридмана-Диакониса.

В качестве альтернативы вы можете передать диапазон в параметр bins, чтобы более точно контролировать количество интервалов, а также их минимум и максимум. Применяется формулировка «чтобы построить 20 интервалов от -5 до +5, введите ...», и здесь нам нужно добавить 1 к длине, поскольку длина учитывает количество границ интервала.

In [ ]:
b_range = range(-5, 5, length=21)
plot(b_range, seriestype=:scatter)
Out[0]:

Нормализация

Часто требуется каким-либо образом нормализовать гистограмму. Для этого используется атрибут normalize. Он позволяет нормализовать общую площадь интервалов до 1. Поскольку мы выбрали образец из нормального распределения, мы также можем построить его график.

In [ ]:
p(x) = 1/sqrt(2pi) * exp(-x^2/2)

histogram(x, bins=b_range, normalize=:pdf, color=:gray)
plot!(p, lw=3, color=:red)
xlims!(-5, 5)
ylims!(0, 0.4)
Out[0]:

normalize может принимать другие значения, в том числе:

  1. :probability – суммирует все высоты ячеек до 1;

  2. :density – площадь каждого контейнера равна количеству.

Взвешенные гистограммы

Следующий вариант отображения, который мы рассмотрим, – это взвешенные гистограммы.

In [ ]:
f_exp(x) = exp(x)/(exp(1)-1)

x = rand(10^4)
w = exp.(x)

histogram(x, bins=:scott, weights=w, normalize=:pdf, color=:gray)
plot!(f_exp, lw=3, color=:red)
plot!(legend=:topleft)
xlims!(0, 1.0)
ylims!(0, 1.6)
Out[0]:

Другие варианты

  1. Графики разброса гистограммы можно построить с помощью scatterhist и scatterhist!, где столбцы заменяются точками.
  2. Ступенчатые графики гистограммы можно построить с помощью stephist и stephist!, где контур заменяет столбцы.
In [ ]:
p1 = histogram(x, title="Bar")
p2 = scatterhist(x, title="Scatter")
p3 = stephist(x, title="Step")
plot(p1, p2, p3, layout=(1, 3), legend=false)
Out[0]:

Примечание: обратите внимание, что ось Y диаграммы рассеяния гистограммы по умолчанию не начинается с 0.

Вывод

В данном примере мы рассмотрели возможности построения различных гистограмм в Engee и убедились в удобстве работы с этим инструментом.