Создавайте настраиваемые ящики с усами с помощью Matplotlib

PythonPythonBeginner
Практиковаться сейчас

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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

Советы по работе с ВМ

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

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

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

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

Начнем с импорта необходимых библиотек и генерации фейковых данных.

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.cbook as cbook

## Generate fake data
np.random.seed(19680801)
data = np.random.lognormal(size=(37, 4), mean=1.5, sigma=1.75)
labels = list('ABCD')

Вычисляем статистику для ящика с усами

Функция boxplot_stats() из модуля matplotlib.cbook вычисляет статистику, необходимую для построения ящика с усами. Мы передаем в нее данные и метки в качестве параметров.

## Compute boxplot stats
stats = cbook.boxplot_stats(data, labels=labels, bootstrap=10000)

Настраиваем статистику ящика с усами

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

for n in range(len(stats)):
    stats[n]['med'] = np.median(data)
    stats[n]['mean'] *= 2

Создаем базовый ящик с усами

Мы можем создать базовый ящик с усами, вызвав функцию bxp() из Matplotlib. Мы передаем в нее вычисленную статистику в качестве параметра.

## Create a basic boxplot
plt.bxp(stats)
plt.show()

Включаем или отключаем отображение различных элементов

Мы можем включать или отключать отображение различных элементов ящика с усами, используя различные параметры в функции bxp(). В этом примере мы демонстрируем, как показать или скрыть среднее значение, коробку, "крышки", зазоры и выбросы.

## Toggle the display of different elements
plt.bxp(stats, showmeans=True, showbox=False, showcaps=False, shownotches=True, showfliers=False)
plt.show()

Настраиваем отображение различных элементов

Мы можем настроить отображение различных элементов ящика с усами, используя различные параметры в функции bxp(). В этом примере мы демонстрируем, как настроить коробку, медиану, выбросы, точку среднего значения и линию среднего значения.

## Customize the display of different elements
boxprops = dict(linestyle='--', linewidth=3, color='darkgoldenrod')
flierprops = dict(marker='o', markerfacecolor='green', markersize=12, linestyle='none')
medianprops = dict(linestyle='-.', linewidth=2.5, color='firebrick')
meanpointprops = dict(marker='D', markeredgecolor='black', markerfacecolor='firebrick')
meanlineprops = dict(linestyle='--', linewidth=2.5, color='purple')

plt.bxp(stats, boxprops=boxprops, flierprops=flierprops, medianprops=medianprops, meanprops=meanpointprops, meanline=True, showmeans=True)
plt.show()

Резюме

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