Введение
В этом практическом занятии мы научимся использовать 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.