Matplotlib Гистограмма

Мы можем использовать метод `hist()` в pyplot для построения гистограмм.

Метод `hist()` — это функция в подбиблиотеке pyplot библиотеки Matplotlib, используемая для построения гистограмм.

Метод `hist()` можно использовать для визуализации распределения данных, например для наблюдения центральной тенденции, асимметрии и выбросов данных.

Синтаксис метода `hist()` выглядит следующим образом:

matplotlib.pyplot.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, **kwargs)

Описание параметра:

  • x: Указывает данные, используемые для построения гистограммы; это может быть одномерный массив или список.
  • bins: Необязательный параметр, задаёт количество интервалов (bins) для гистограммы. По умолчанию — 10.
  • range: Необязательный параметр, задаёт диапазон значений гистограммы; это может быть кортеж или список из двух значений. По умолчанию — None, что означает использование минимального и максимального значений в данных.
  • density: Необязательный параметр, указывает, нормализовать ли гистограмму. По умолчанию — False, что означает, что высота гистограммы — это количество наблюдений в каждом интервале, а не частота или плотность вероятности.
  • weights: Необязательный параметр, задаёт вес каждой точки данных. По умолчанию — None.
  • cumulative: Необязательный параметр, указывает, строить ли график кумулятивного распределения. По умолчанию — False.
  • bottom: Необязательный параметр, задаёт нижнюю высоту гистограммы. По умолчанию — None.
  • histtype: Необязательный параметр, задаёт тип гистограммы, который может быть 'bar', 'barstacked', 'step', 'stepfilled' и т. д. По умолчанию — 'bar'.
  • align: Необязательный параметр, задаёт выравнивание бинов гистограммы. Может быть 'left', 'mid' или 'right'. По умолчанию 'mid'.
  • orientation: Необязательный параметр, задаёт ориентацию гистограммы. Может быть 'vertical' или 'horizontal'. По умолчанию 'vertical'.
  • rwidth: Необязательный параметр, задаёт ширину каждого бина. По умолчанию None.
  • log: Необязательный параметр, указывает, использовать ли логарифмическую шкалу по оси Y. По умолчанию False.
  • color: Необязательный параметр, задаёт цвет гистограммы.
  • label: Необязательный параметр, задаёт подпись гистограммы.
  • stacked: Необязательный параметр, указывает, складывать ли различные гистограммы. По умолчанию False.
  • **kwargs: Необязательный параметр, другие параметры построения графика.

В следующем примере мы просто используем `hist()` для создания гистограммы:

Пример

import matplotlib.pyplot as plt
import numpy as np

# Сгенерировать набор случайных данных
data = np.random.randn(1000)

# Построить гистограмму
plt.hist(data, bins=30, color='skyblue', альфа=0.8)

# Задать свойства графика
plt.title('ПРИМЕР hist() Тест')
plt.xlabel('Значение')
plt.ylabel('Частота')

# Отобразить график
plt.show()

Отображаемый результат выглядит следующим образом:

В следующем примере показано, как использовать функцию `hist()` для построения гистограмм для нескольких групп данных и их сравнения:

Пример

import matplotlib.pyplot as plt
import numpy as np

# Сгенерировать три набора случайных данных
data1 = np.random.normal(0, 1, 1000)
data2 = np.random.normal(2, 1, 1000)
data3 = np.random.normal(-2, 1, 1000)

# Построить гистограммы
plt.hist(data1, bins=30, alpha=0.5, label='Data 1')
plt.hist(data2, bins=30, alpha=0.5, label='Data 2')
plt.hist(data3, bins=30, alpha=0.5, label='Data 3')

# Задать свойства графика
plt.title('EXAMPLE hist() TEST')
plt.xlabel('Значение')
plt.ylabel('Частота')
plt.legend()

# Отобразить график
plt.show()

В приведенном выше примере мы сгенерировали три различных набора случайных данных и использовали функцию `hist()` для построения их гистограмм. Задавая различные средние значения и стандартные отклонения, мы можем генерировать случайные данные с различными характеристиками распределения.

Мы установили параметр `bins` равным 30, что означает разделение диапазона данных на 30 интервалов равной ширины, а затем подсчет частоты данных в каждом интервале.

Мы установили параметр `alpha` равным 0.5, что означает, что прозрачность цвета каждой гистограммы составляет 50%.

Мы использовали параметр `label`, чтобы задать подпись каждой гистограммы, чтобы ее можно было отобразить в легенде.

Затем мы используем функцию `legend()` для отображения легенды. Наконец, мы используем функции `title()`, `xlabel()` и `ylabel()` для установки заголовка диаграммы и подписей осей.

Отображаемый результат выглядит следующим образом:

Из рисунка выше мы ясно видим распределение этих трёх групп данных. Среди них `data1` и `data2` близки к нормальному распределению, тогда как `data3` имеет асимметрию.

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

Совместное использование с Pandas

В следующем примере мы объединяем Pandas, чтобы построить гистограмму:

Пример

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
 
# Используйте NumPy для генерации случайных чисел
random_data = np.random.normal(170, 10, 250)
 
# Преобразуйте данные в Pandas DataFrame
dataframe = pd.DataFrame(random_data)
 
# Используйте метод hist() Pandas для построения гистограммы
dataframe.hist()


# Задать свойства графика
plt.title('ПРИМЕР hist() Тест')
plt.xlabel('X-Value')
plt.ylabel('Y-Value')

# Отобразить график
plt.show()

Отображаемый результат выглядит следующим образом:

Помимо DataFrame, в Pandas для построения гистограмм можно также использовать объекты Series. Просто замените столбцы в DataFrame на объекты Series.

Пример

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# Сгенерировать случайные данные
data = pd.Series(np.random.normal(size=100))

# Построить гистограмму
# Параметр bins задаёт количество столбцов на гистограмме
plt.hist(data, bins=10)

# Установите заголовок диаграммы и подписи осей
plt.title('EXAMPLE hist() Tes')
plt.xlabel('X-Values')
plt.ylabel('Y-Values')

# Отобразить график
plt.show()

Другие расширения