Создание нескольких гистограмм с использованием Matplotlib

Beginner

This tutorial is from open-source community. Access the source code

Введение

Гистограммы - прекрасный способ визуализировать распределение набора данных, а Matplotlib - одна из самых популярных библиотек Python для создания визуализаций данных. В этом практическом занятии мы будем использовать Matplotlib для создания бок о бок гистограмм для нескольких наборов данных.

Советы по использованию ВМ

После запуска ВМ перейдите в левый верхний угол и переключитесь на вкладку Notebook, чтобы приступить к практике в Jupyter Notebook.

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

Если вы столкнетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.

Импортируем необходимые библиотеки

Сначала нам нужно импортировать необходимые библиотеки для нашего кода. Для построения гистограмм мы будем использовать Matplotlib и NumPy:

import matplotlib.pyplot as plt
import numpy as np

Создаем примерные наборы данных

Далее мы создадим примерные наборы данных, которые будем использовать для наших гистограмм. Мы создадим три набора данных по 387 точкам данных каждый:

np.random.seed(19680801)
number_of_data_points = 387
labels = ["A", "B", "C"]
data_sets = [np.random.normal(0, 1, number_of_data_points),
             np.random.normal(6, 1, number_of_data_points),
             np.random.normal(-3, 1, number_of_data_points)]

Вычисляем величины для построения

Прежде чем мы сможем создать наши гистограммы, нам нужно вычислить некоторые величины для построения. Мы вычислим диапазон наших наборов данных, сгруппированные наборы данных, максимальные значения интервалов и расположения по оси x для каждой гистограммы:

hist_range = (np.min(data_sets), np.max(data_sets))
number_of_bins = 20
binned_data_sets = [
    np.histogram(d, range=hist_range, bins=number_of_bins)[0]
    for d in data_sets
]
binned_maximums = np.max(binned_data_sets, axis=1)
x_locations = np.arange(0, sum(binned_maximums), np.max(binned_maximums))

Строим гистограммы

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

## The bin_edges are the same for all of the histograms
bin_edges = np.linspace(hist_range[0], hist_range[1], number_of_bins + 1)
heights = np.diff(bin_edges)
centers = bin_edges[:-1] + heights / 2

## Cycle through and plot each histogram
fig, ax = plt.subplots()
for x_loc, binned_data in zip(x_locations, binned_data_sets):
    lefts = x_loc - 0.5 * binned_data
    ax.barh(centers, binned_data, height=heights, left=lefts)

ax.set_xticks(x_locations, labels)
ax.set_ylabel("Data values")
ax.set_xlabel("Data sets")

Отображаем гистограммы

Наконец, мы можем отобразить наши гистограммы с использованием метода show:

plt.show()

Резюме

В этом практическом занятии мы узнали, как создавать гистограммы рядом для нескольких наборов данных с использованием Matplotlib. Мы вычислили необходимые величины для построения и использовали метод barh для создания горизонтальных столбцов для каждой гистограммы. С этими навыками мы можем создавать информативные визуализации наших данных, чтобы получить представление о них и передать свои результаты другим.