我有一个类似于Seaborn文档产生的图,如下所示:https://seaborn.pydata.org/generated/seaborn.violinplot.html
在这里,请不要介意实际的数据和标签,仅用于演示。 我想做的是根据同一数据(作为基准)创建所有橙色分布。
在这种情况下,每个工作日的所有蓝色分布将与相同的橙色分布相对应。
Seaborn的内置功能是否有可能?
答案 0 :(得分:1)
我认为没有什么“内置”功能可以执行您想要的操作,但是如果您不介意对数据框有点创意,那么这样做很容易,但是您必须提供数据框的结构以确保。
这是一种使用seaborn的tips
数据集的方法(效率很低)
target_var = 'total_bill'
hue_var = 'smoker'
hue_value = 'Yes'
cat_var = 'day'
grouped_value = 'ALL WEEK'
tips = sns.load_dataset("tips")
tips2 = tips.loc[tips[hue_var]==hue_value]
for cat in tips[cat_var].unique():
temp = tips.loc[:,[target_var]]
temp[cat_var] = cat
temp[hue_var] = grouped_value
tips2 = tips2.append(temp, ignore_index=True, sort=False)
fig, (ax1, ax2) = plt.subplots(1,2, figsize=(10,4))
sns.violinplot(x=cat_var, y=target_var, hue=hue_var, hue_order=['Yes','No'],
order=['Thur','Fri','Sat','Sun'],
data=tips, palette="muted", split=True, ax=ax1)
sns.violinplot(x=cat_var, y=target_var, hue=hue_var, hue_order=[hue_value,grouped_value],
order=['Thur','Fri','Sat','Sun'],
data=tips2, palette="muted", split=True, ax=ax2)