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

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

    Насыщенность цвета задаётся через параметр saturation:

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)

plt.figure(figsize=(15, 5))
s_list = [0.25, 0.5, 0.75, 1]
for i, s in enumerate(s_list):
    plt.subplot(1, len(s_list), i + 1)
    sns.violinplot(x="origin", y="mpg", hue="cylinders", saturation=s, data=mpg_demo)

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


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

    Заметим, что эти диаграммы имеют симметричную форму, поэтому для того, чтобы судить о характере распределения достаточно только её половины, можно объединить их - левую часть взять от распределения с количеством цилиндров равным шести, правую - с количеством равным четырём:

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,
               split=True, data=mpg_demo)

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


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

    Толщина линии контура диаграммы задаётся через linewidth:

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)

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.violinplot(x="origin", y="mpg", linewidth=lw, data=mpg_demo)

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


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

    Ширина ядра устанавливается через параметр bw:

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)

bw_values = ["scott", "silverman", 0.25, 1]
plt.figure(figsize=(15, 5))
for i, b in enumerate(bw_values):
    plt.subplot(1, len(bw_values), i + 1)
    plt.title(str(b))
    sns.violinplot(x="origin", y="mpg", bw=b, data=mpg_demo)

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


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

    Масштаб диаграммы можно задать через scale, этот параметр принимает одно из трех значений:{'area', 'count', 'width'}:

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)

scale_values = ["area", "count", "width"]
plt.figure(figsize=(15, 5))
for i, s in enumerate(scale_values):
    plt.subplot(1, len(scale_values), i + 1)
    plt.title(str(s))
    sns.violinplot(x="origin", y="mpg", scale=s, data=mpg_demo)

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


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

    За порядок и ориентацию отвечают параметры order и orient:

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", orient='h',
               order=["usa", "japan"], data=mpg_demo)

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


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

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




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