Шаг 110.
Язык Python. Визуализация данных. Библиотека Seaborn. ... . Визуализация категориальных данных в виде точечных диаграмм. Функция swarmplot()

    На этом шаге мы рассмотрим назначение и примеры использования этой функции.

    Функция swarmplot() по своему функционалу и параметрам для настройки отображения подобна функции stripplot(), за исключением параметра jitter, который у неё отсутствует. Идея swarmplot() в том, что отображаемые точки на диаграмме не перекрываются, это позволяет делать выводы о преобладании тех или иных значений в наборах данных по их визуальному распределению.

    Рассмотрим несколько примеров, демонстрирующих работу с swarmplot():

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import pandas as pd

tips = sns.load_dataset("tips")

sns.swarmplot(x="time", y='tip', data=tips)

plt.show()
Архив с файлом можно взять здесь.


Рис.1. Диаграмма, построенная функцией swarmplot()

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

    Для задания цветовой схемы будем использовать признак, отвечающий за то, курили при этом клиенты или нет:

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import pandas as pd

tips = sns.load_dataset("tips")

sns.swarmplot(x="time", y='tip', hue="smoker", data=tips)

plt.show()
Архив с файлом можно взять здесь.


Рис.2. Демонстрация цветового разделения по признаку smoker

    Возьмём подвыборку из набора в количестве 50 штук и дополнительно настроим размер маркеров, их цвет и ширину границы:

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import pandas as pd

tips = sns.load_dataset("tips")

df = tips.sample(frac=1, random_state=123)[:50]
sns.swarmplot(x="time", y='tip', size=10, edgecolor="gray",
              linewidth=2, data=df)

plt.show()
Архив с файлом можно взять здесь.


Рис.3. Диаграмма с измеренными размером, цветом и шириной границы маркеров

    Зададим самостоятельно цветовую палитру:

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import pandas as pd

tips = sns.load_dataset("tips")

color_palette = {"Male": "g", "Female": "y"}
df = tips.sample(frac=1, random_state=123)[:50]
sns.swarmplot(x="time", y='tip', hue="sex", size=10, edgecolor="gray",
              palette=color_palette, linewidth=2, data=df)

plt.show()
Архив с файлом можно взять здесь.


Рис.4. Диаграмма с изменённой цветовой палитрой

    За ориентацию диаграммы отвечает параметр orient, за порядок - order, параметр dodge управляет визуальным разделением данных. Проиллюстрируем на примерах их использование. Изменим ориентацию и порядок отображения значений признака time:

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import pandas as pd

tips = sns.load_dataset("tips")

sns.swarmplot(x='tip', y="time", order=['Dinner', 'Lunch'],
              orient='h', hue="sex", data=tips)

plt.show()
Архив с файлом можно взять здесь.


Рис.5. Демонстрация работы с параметрами order и orient

    Разделим с помощью параметра dodge выбору на группы:

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import pandas as pd

tips = sns.load_dataset("tips")

sns.swarmplot(x="time", y='tip', hue="smoker", dodge=True, data=tips)

plt.show()
Архив с файлом можно взять здесь.


Рис.6. Демонстрация работы с параметром dodge

    На следующем шаге мы рассмотрим визуализацию распределений категориальных данных.




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