Шаг 114.
Язык Python. Визуализация данных. Библиотека Seaborn. ... . Визуализации распределений категориальных данных. Функция violin()

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

    Следующей функцией для визуализации категориальных данных, которую мы рассмотрим, будет violin(). По своему функциональному назначению и возможностям она похожа на рассмотренную ранее boxplot(), дополнительно на ней отображается оценка плотности ядра. Будем работать с тем же набором данных, что был использован нами при изучении boxplot():

  mpg = sns.load_dataset("mpg")

    Построим диаграммы boxplot и violine рядом друг с другом для сравнения.

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=(10, 5))
plt.subplot(121)
sns.boxplot(x="origin", y="mpg", data=mpg_mod)
plt.subplot(122)
sns.violinplot(x="origin", y="mpg", data=mpg_mod)

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


Рис.1. Сравнение диаграмм boxplot и violinplot

    Помимо уже знакомых нам параметров для работы с цветовой схемой и представлением violineplot() имеет ряд уникальных аргументов, некоторые из них приведены ниже:

bw: {'scott', 'silverman', float}, optional
Ширина ядра (kernel bandwidth).

scale: {'area', 'count', 'width'}, optional
Метод масштабирования ширины диаграммы.

split: bool, optional
Если разделение набора данных через параметр hue производится на две группы, то при split=True будет отображена только половина диаграммы.

Цветовое оформление диаграммы

    Единая цветовая гамма задаётся через параметр color:

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.violinplot(x="origin", y="mpg", color='yellow', data=mpg_mod)

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


Рис.2. Демонстрация работы с параметром color функции violinplot()

    Выделим из набора данных mpg автомобили, произведённые в США и Японии, у которых количество цилиндров равно 4 или 6:

fn_filter = lambda x: True if x in [4, 6] else False
fn_mod = lambda x: {4: 'four', 6: 'six', 8: 'eight'}[x]
mpg_country = mpg[mpg["origin"] != "europe"]
mpg_demo = mpg_country[mpg_country['cylinders'].map(fn_filter)].copy()
mpg_demo['cylinders'] = mpg_demo['cylinders'].map(fn_mod)

    Построим диаграмму с дополнительным цветовым разделением по количеству цилиндров:

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

mpg = sns.load_dataset("mpg")

fn_filter = lambda x: True if x in [4, 6] else False
fn_mod = lambda x: {4: 'four', 6: 'six', 8: 'eight'}[x]
mpg_country = mpg[mpg["origin"] != "europe"]
mpg_demo = mpg_country[mpg_country['cylinders'].map(fn_filter)].copy()
mpg_demo['cylinders'] = mpg_demo['cylinders'].map(fn_mod)

sns.violinplot(x="origin", y="mpg", hue="cylinders", data=mpg_demo)

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


Рис.3. Демонстрация работы с параметром hue функции violinplot()

    Определим цветовую схему и порядок присвоения цветов для cylinders:

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

mpg = sns.load_dataset("mpg")

fn_filter = lambda x: True if x in [4, 6] else False
fn_mod = lambda x: {4: 'four', 6: 'six', 8: 'eight'}[x]
mpg_country = mpg[mpg["origin"] != "europe"]
mpg_demo = mpg_country[mpg_country['cylinders'].map(fn_filter)].copy()
mpg_demo['cylinders'] = mpg_demo['cylinders'].map(fn_mod)

color_scheme = {"four": "y", "six": "violet"}
color_order = ["six", "four"]
sns.violinplot(x="origin", y="mpg", hue="cylinders",
               hue_order=color_order, palette=color_scheme, data=mpg_demo)

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


Рис.4. Демонстрация работы с параметрами hue_order и palette функции violinplot()

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




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