通常,不可能将几个Seaborn图形级功能的输出组合到一个图形中。参见(此问题,也此问题)。我曾经写过一篇hack文章,从外部将这些数字组合起来,但是它有几个缺点。如果适合您,请随意使用它。
但通常,请考虑手动创建所需的图。在这种情况下,它可能看起来像这样:
import seaborn as snsimport matplotlib.pyplot as pltsns.set()fig, axes = plt.subplots(2,2, figsize=(8,6), sharey="row", sharex="col")tips = sns.load_dataset("tips")order = tips["sex"].unique()hue_order = tips["smoker"].unique()for i, (n, grp) in enumerate(tips.groupby("time")): sns.countplot(x="sex", hue="smoker", data=grp, order=order, hue_order=hue_order, ax=axes[0,i]) sns.violinplot(x='sex', y='total_bill', hue='smoker', data=grp, order=order, hue_order=hue_order, split='True', cut=0, bw=0.25, scale='area', scale_hue=False, inner='quartile', ax=axes[1,i]) axes[0,i].set_title(f"time = {n}")axes[0,0].get_legend().remove()axes[1,0].get_legend().remove()axes[1,1].get_legend().remove()plt.show()


