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