0

我正在尝试用 a 替换seaborn.facetgrida seaborn.catplot。但是seaborn.catplot没有正确标记Embarked = C刻面的色调。

数据集:泰坦尼克号


e = sns.FacetGrid(data= train_df, col='Embarked')
e.map_dataframe(sns.pointplot, 'Pclass', 'Survived', hue='Sex', palette='deep')
e.add_legend()

在 Embarked C 男性正确呈现为色调

Embarked C : 男性被正确地呈现为色调


但我的seaborn.catplot节目:

sns.catplot(x='Pclass', y= 'Survived', hue='Sex', data=train_df, kind='point',  col='Embarked')

在 Emabarked= C 男性中没有适当的色调

Embarked C : 男性未正确呈现为色调

4

2 回答 2

0

谢谢约翰C。是的,我的 FacetGrid 情节是错误的。我手动检查了它。

train_df[(train_df['Embarked']=='C') & (train_df['Survived']==1)].groupby('Sex').count()['Survived']

输出:

Sex
    female    64
    male      29

女性比男性大。FacetGrid hue_order应指定in否则可能会给出错误的结果。

于 2021-06-17T04:16:46.007 回答
0

JohanC 已经在他的评论中取笑了答案。我将解释并完成。

以下是关于订购的文档:seaborn.catplot

与底层绘图函数的情况一样,如果变量具有分类数据类型,则分类变量的级别及其顺序将从对象中推断出来。否则,您可能必须使用更改数据框排序或使用函数参数(orientorderhue_order等)来正确设置绘图。

这意味着您可以例如使用该hue_order参数来确保按您希望的方式对绘图进行排序:

order,hue_order:字符串列表,可选
绘制分类级别的顺序,否则从数据对象中推断级别。

在这里如何在您的情况下使用它:

sns.catplot(x='Pclass', y='Survived', hue='Sex', hue_order=['male', 'female'], data=train_df, kind='point', col='Embarked')

或者,如文档中所述并由 JohanC 指出,您可以将列的类型转换train_df['Sex']为分类。然后订单将由 推断seaborn

于 2021-06-16T11:00:55.400 回答