#python #seaborn #boxplot #violin-plot
Вопрос:
Я хочу сравнить side by side seaborn вилонплот с boxplot. Это мой образец набора данных:
group points
0 A 12.432848
1 A 13.246483
2 A 13.812403
3 A 13.212260
4 A 15.307191
5 B 13.464179
6 B 11.695743
7 B 12.197824
8 B 13.892186
9 B 9.586561
10 C 18.071026
11 C 18.522597
12 C 17.649151
13 C 18.266435
14 C 17.088155
Я знаю, что могу получить схему sns.boxplot(data=df, x="group", y="points", hue="group")
коробки и схему sns.violinplot(data=df, x="group", y="points", hue="group")
скрипки, но они мне нравятся, наполовину схема коробки и наполовину схема скрипки, как на этой картинке
Спасибо за вашу помощь
Ответ №1:
Есть ли действительно интерес в этом? Скрипичный план уже включает в себя небольшой квадратный план в центре.
Тем не менее, это достижимо за счет использования поддельного уровня оттенка и переключения порядка между двумя графиками:
df2 = df.assign(hue=1)
sns.boxplot(data=df2, x="group", y="points", hue="hue", hue_order=[1,0])
g = sns.violinplot(data=df2, x="group", y="points", hue="hue", split=True, hue_order=[0,1])
g.legend_.remove() # hide legend
Комментарии:
1. Идеально, это именно то, что мне нужно
Ответ №2:
У вас нет трех измерений, как на изображении, которое вы показали. Я верю, что вы просто хотите:
import pandas as pd
import seaborn as sns
example_data = (
pd.DataFrame(
[
['A', 12],
["A", 15],
["A", 18],
["B", 11],
["B", 10],
["B", 8]
]
)
)
example_data.columns = ['group', 'points']
sns.set_style('whitegrid')
sns.violinplot(
data=example_data,
x='group',
y='points'
)
Выход:
Я бы сослался https://seaborn.pydata.org/generated/seaborn.violinplot.html для дальнейшей настройки и документирования