На этом шаге мы рассмотрим назначение и примеры использования этой функции.
Следующей функцией для визуализации категориальных данных, которую мы рассмотрим, будет 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() имеет ряд уникальных аргументов, некоторые из них приведены ниже:
Единая цветовая гамма задаётся через параметр 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()
На следующем шаге мы закончим изучение этого вопроса.