Построение гистограмм с использованием Matplotlib

Beginner

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

Введение

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

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

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

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

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

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

Прежде чем начать, нам нужно импортировать необходимые библиотеки. В этом практическом занятии мы будем использовать Matplotlib и numpy. Откройте новый файл Python и добавьте следующий код:

import matplotlib.pyplot as plt
import numpy as np

Задаем случайный种子 и генерируем данные

Мы будем использовать numpy для генерации случайных данных. Чтобы наша работа была воспроизводима, мы зададим случайный种子。Добавьте следующий код в ваш файл:

np.random.seed(19680801)
data = np.random.randn(1000)

Генерируем данные для гистограммы

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

n, bins = np.histogram(data, 50)

Генерируем углы прямоугольников

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

left = bins[:-1]
right = bins[1:]
bottom = np.zeros(len(left))
top = bottom + n

Генерируем объект Path и создаем из него патч

Далее мы сгенерируем объект Path и создадим из него патч. Мы будем использовать объект Path для рисования нашей гистограммы с использованием прямоугольников. Добавьте следующий код:

XY = np.array([[left, left, right, right], [bottom, top, top, bottom]]).T
barpath = path.Path.make_compound_path_from_polys(XY)
patch = patches.PathPatch(barpath)
patch.sticky_edges.y[:] = [0]
axs[0].add_patch(patch)
axs[0].autoscale_view()

Рисуем гистограмму с использованием PathCollection

Вместо использования большого количества экземпляров Rectangle, мы можем использовать более быстрый метод рисования нашей гистограммы с использованием PathCollection. Мы будем создавать составной путь напрямую с использованием вершин и кодов. Добавьте следующий код:

nrects = len(left)
nverts = nrects*(1+3+1)
verts = np.zeros((nverts, 2))
codes = np.ones(nverts, int) * path.Path.LINETO
codes[0::5] = path.Path.MOVETO
codes[4::5] = path.Path.CLOSEPOLY
verts[0::5, 0] = left
verts[0::5, 1] = bottom
verts[1::5, 0] = left
verts[1::5, 1] = top
verts[2::5, 0] = right
verts[2::5, 1] = top
verts[3::5, 0] = right
verts[3::5, 1] = bottom

barpath = path.Path(verts, codes)
patch = patches.PathPatch(barpath)
patch.sticky_edges.y[:] = [0]
axs[1].add_patch(patch)
axs[1].autoscale_view()

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

Наконец, мы можем отобразить нашу гистограмму с использованием Matplotlib. Добавьте следующий код в ваш файл:

plt.show()

Резюме

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