Создание ящиков из погрешностных баров с использованием PatchCollection

Beginner

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

Введение

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