Шаг 140.
Язык Python. Визуализация данных.
Библиотека Seaborn. Управление компоновкой диаграмм. Facet-сетка

    На этом шаге мы рассмотрим назначение и основные параметры класса 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. Он имеет следующий набор аргументов:

func: callable
Функция построения графика (например, scatter()).

args: strings
Имена столбцов из набора, который был передан через параметр data при создании объекта FacetGrid.

kwargs: keyword arguments
Параметры функции, переданной через аргумент func.

    Загрузим набор данных 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

    На следующем шаге мы закончим изучение этого вопроса.




Предыдущий шаг Содержание Следующий шаг