Введение
В этом лабораторном занятии мы научимся создавать ящики с усами из погрешностей с использованием PatchCollection. Ящики с усами полезны для отображения диапазона и распределения данных. Добавляя прямоугольный участок, определяемый границами столбцов в обоих направлениях x и y, мы можем сделать более наглядный график с погрешностями.
Советы по работе с ВМ
После запуска ВМ нажмите в верхнем левом углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Импорт библиотек
Сначала мы импортируем необходимые библиотеки, в том числе numpy и matplotlib.
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.collections import PatchCollection
from matplotlib.patches import Rectangle
Подготовка данных
Затем мы подготовим данные для нашего ящика с усами. Мы создадим некоторые фиктивные данные для значений x и y, а также для значений ошибок.
## Number of data points
n = 5
## Dummy data
np.random.seed(19680801)
x = np.arange(0, n, 1)
y = np.random.rand(n) * 5.
## Dummy errors (above and below)
xerr = np.random.rand(2, n) + 0.1
yerr = np.random.rand(2, n) + 0.2
Создание функции для ящиков с ошибками
Теперь мы создадим функцию под названием make_error_boxes, которая будет создавать прямоугольный участок, определяемый границами столбцов в обоих направлениях x и y.
def make_error_boxes(ax, xdata, ydata, xerror, yerror, facecolor='r',
edgecolor='none', alpha=0.5):
## Loop over data points; create box from errors at each point
errorboxes = [Rectangle((x - xe[0], y - ye[0]), xe.sum(), ye.sum())
for x, y, xe, ye in zip(xdata, ydata, xerror.T, yerror.T)]
## Create patch collection with specified colour/alpha
pc = PatchCollection(errorboxes, facecolor=facecolor, alpha=alpha,
edgecolor=edgecolor)
## Add collection to axes
ax.add_collection(pc)
## Plot errorbars
artists = ax.errorbar(xdata, ydata, xerr=xerror, yerr=yerror,
fmt='none', ecolor='k')
return artists
Создание фигуры и осей
Теперь мы создадим фигуру и оси для нашего ящика с усами с использованием plt.subplots().
## Create figure and axes
fig, ax = plt.subplots(1)
Вызов функции для создания ящиков с ошибками
Теперь мы вызовем функцию make_error_boxes(), чтобы создать ящики с ошибками на нашем графике.
## Call function to create error boxes
_ = make_error_boxes(ax, x, y, xerr, yerr)
Отображение графика
Наконец, мы отобразим график с использованием plt.show().
plt.show()
Резюме
В этом практическом занятии мы узнали, как создавать ящики с усами из погрешностных баров с использованием PatchCollection в Matplotlib. Добавив прямоугольный участок, определяемый границами столбцов в обоих направлениях x и y, мы смогли создать более наглядный график с погрешностными барами.