На этом шаге мы рассмотрим назначение и примеры использования этой функции.
Для начала разберёмся с тем, какую информацию мы можем получить от диаграммы boxplot. Её внешний вид представлен на рисунке 1.
Рис.1. Диаграмма boxplot
На диаграмме отображена медиана (2-ой квартиль), 1-ый и 3-ий квартили; которые формируют межквартильный размах; если отложить вверх и вниз по полтора межквартильных размаха, то последние значения признака на этих промежутках формируют границы усов, значения вне этих границ будут определяться как выбросы, они отображаются отдельными точками.
Помимо параметров общих для всех функций визуализации данных Seaborn (см. 86 шаг) и инструментов для работы с категориальными данными, функция boxplot() имеет ряд уникальных параметров:
Простроим диаграмму для набора данных mpg, отобразим распределение количества миль, которое автомобиль проезжает на одном галлоне топлива для США и Европы:
import matplotlib.pyplot as plt import numpy as np import seaborn as sns import pandas as pd mpg = sns.load_dataset("mpg") mpg_mod = mpg[mpg["origin"] != "japan"] sns.boxplot(x="origin", y="mpg", data=mpg_mod) plt.show()
Рис.2. Демонстрация работы функции boxplot()
Сделаем цветовую заливку монотонной:
import matplotlib.pyplot as plt import numpy as np import seaborn as sns import pandas as pd mpg = sns.load_dataset("mpg") mpg_mod = mpg[mpg["origin"] != "japan"] sns.boxplot(x="origin", y="mpg", color='g', data=mpg_mod) plt.show()
Рис.3. Диаграмма boxplot с заливкой зелёного цвета
Насыщенность цвета можно изменить через параметр saturation, по умолчанию это значение равно 0.75, т.е. изображение выводится с заниженной насыщенностью, как правило, такое решение даёт более приятное визуальное отображение цвета. Сравним, как будет выглядеть диаграмма при разных значениях параметра saturation:
import matplotlib.pyplot as plt import numpy as np import seaborn as sns import pandas as pd mpg = sns.load_dataset("mpg") mpg_mod = mpg[mpg["origin"] != "japan"] plt.figure(figsize=(15, 5)) sat_list = [1, 0.75, 0.5, 0.25] for i, s in enumerate(sat_list): plt.subplot(1, len(sat_list), i + 1) sns.boxplot(x="origin", y="mpg", saturation=s, data=mpg_mod) plt.show()
Рис.4. Демонстрация работы с параметром saturation
Ещё одним инструментом для изменения визуального оформления диаграммы является параметр linewidth, через него задаётся толщина линий "ящика с усами":
import matplotlib.pyplot as plt import numpy as np import seaborn as sns import pandas as pd mpg = sns.load_dataset("mpg") mpg_mod = mpg[mpg["origin"] != "japan"] plt.figure(figsize=(15, 5)) lw_list = [6, 3, 1] for i, lw in enumerate(lw_list): plt.subplot(1, len(lw_list), i + 1) sns.boxplot(x="origin", y="mpg", linewidth=lw, data=mpg_mod) plt.show()
Рис.5. Демонстрация работы с параметром linewidth
Добавим дополнительное цветовое разделение по количеству цилиндров в двигателе автомобиля с помощью параметра hue:
import matplotlib.pyplot as plt import numpy as np import seaborn as sns import pandas as pd mpg = sns.load_dataset("mpg") mpg_mod = mpg[mpg["origin"] != "japan"] sns.boxplot(x="origin", y="mpg", hue="cylinders", data=mpg_mod) plt.show()
Рис.6. Демонстрация работы с параметром hue
На следующем шаге мы закончим изучение этого вопроса.