На этом шаге мы рассмотрим назначение и основные параметры класса FacetGrid.
С классом FacetGrid мы уже встречались, когда знакомились с функциями relplot(), catplot(), помимо реализации общего интерфейса для соответствующих групп функций, они позволяли работать с компоновкой графиков. Так как класс FacetGrid доступен для использования напрямую, то можно самостоятельно, на базе соответствующего объекта, создавать компоновку.
С большей частью параметров конструктора FacetGrid вы должны быть уже знакомы, если читали описание relplot() и catplot(), к ним относятся data, row, col, hue, col_wrap, sharex, sharey, height, aspect, palette, row_order, col_order, hue_order, dropna, legend_out, margin_titles.
Для отображения графиков необходимо вызвать метод map() объекта класса FacetGrid. Он имеет следующий набор аргументов:
Загрузим набор данных dots:
dots = sns.load_dataset("dots")
Извлечём первые 250 элементов:
dots_mod = dots.sample(frac=1)[:250]
Для разделения графиков по столбцам будем использовать параметр choice, который может принимать значения T1 или T2, по строкам - align, принимающий значения succ, dots. Создадим объект класса FacetGrid:
fg = sns.FacetGrid(dots_mod, col="choice", row="align")
Теперь в каждой ячейке получившейся сетки выведем диаграмму рассеяния для признаков time и firing_rate:
fg.map(plt.scatter, "firing_rate", "time")
Полный текст приложения:
import matplotlib.pyplot as plt import seaborn as sns dots = sns.load_dataset("dots") dots_mod = dots.sample(frac=1)[:250] fg = sns.FacetGrid(dots_mod, col="choice", row="align") fg.map(plt.scatter, "firing_rate", "time") plt.show()
Рис.1. Диаграмма рассеяния
Вместо диаграммы рассеяния построим гистограммы распределения признака coherence:
import matplotlib.pyplot as plt import seaborn as sns dots = sns.load_dataset("dots") dots_mod = dots.sample(frac=1)[:250] fg = sns.FacetGrid(dots_mod, col="choice", row="align") fg.map(plt.hist, "coherence") plt.show()
Рис.2. Демонстрация работы с параметром col и row класса FacetGrid
Для дополнительного цветового разделения можно использовать параметр hue:
import matplotlib.pyplot as plt import seaborn as sns dots = sns.load_dataset("dots") dots_mod = dots.sample(frac=1)[:250] fg = sns.FacetGrid(dots_mod, col="choice", hue="align") fg.map(plt.scatter, "firing_rate", "time") plt.show()
Рис.3. Демонстрация работы с параметром hue класса FacetGrid
Изменим палитру:
import matplotlib.pyplot as plt import seaborn as sns dots = sns.load_dataset("dots") dots_mod = dots.sample(frac=1)[:250] fg = sns.FacetGrid(dots_mod, col="choice", hue="align", palette="Set2") fg.map(plt.scatter, "firing_rate", "time") plt.show()
Рис.4. Демонстрация работы с параметром hue класса FacetGrid
На следующем шаге мы закончим изучение этого вопроса.