有没有简单的方法可以在Seaborn的同一FacetGrid上绘制两个分类图?

时间:2020-06-22 07:06:12

标签: python matplotlib seaborn

我正在尝试使用Seaborn的猫图功能来绘制具有两个特征的条形图。

sns.catplot(kind='bar', data=df, col='col1', y='col2', x='col3')

我现在想在顶部添加原始数据(以带状图的形式)。如果仅使用一个面板来执行此操作,则只需将它们绘制在相同的轴上:

fig, ax = plt.subplots()
sns.barplot(data=df, y='col2', x='col3', ax=ax, alpha=0.5)
sns.stripplot(data=df, y='col2', x='col3', ax=ax, dodge=True)

matplotlib axes with barplot and stripplot

但是,由于catplot返回FacetGrid,所以我无法弄清楚该怎么做。谢谢!

1 个答案:

答案 0 :(得分:0)

catplot是用于简化常见的多面图的辅助功能。如果您想进一步控制,建议您直接使用FacetGrid

N = 1000
df = pd.DataFrame({'col1':np.random.choice(['A','B','C'], size=N),
                   'col2':np.random.random(size=N),
                   'col3':np.random.choice(['D','E'], size=N)})
g = sns.FacetGrid(data=df, col='col1', col_wrap=2)
g.map_dataframe(sns.barplot, x='col3', y='col2', alpha=0.5, ci=None)
g.map_dataframe(sns.stripplot, x='col3', y='col2')

enter image description here