首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >seaborn.catplot()色调不能正常工作

seaborn.catplot()色调不能正常工作
EN

Stack Overflow用户
提问于 2021-06-16 04:22:14
回答 2查看 637关注 0票数 0

我正在尝试用一个seaborn.facetgrid替换一个seaborn.catplot。但是seaborn.catplot没有在Embarked = C方面正确地标注色调。

数据集:泰坦尼克号

代码语言:javascript
复制
e = sns.FacetGrid(data= train_df, col='Embarked')
e.map_dataframe(sns.pointplot, 'Pclass', 'Survived', hue='Sex', palette='deep')
e.add_legend()

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

但我的seaborn.catplot显示:

代码语言:javascript
复制
sns.catplot(x='Pclass', y= 'Survived', hue='Sex', data=train_df, kind='point',  col='Embarked')

登船C男性没有正确地表示为色调

EN

回答 2

Stack Overflow用户

发布于 2021-06-16 11:00:55

JohanC已经在他的评论中取笑了这个答案。我只会解释和完整。

以下是文档 of seaborn.catplot对订购的看法:

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

这意味着您可以使用hue_order参数来确保按您希望的顺序排列绘图:

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

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

代码语言:javascript
复制
sns.catplot(x='Pclass', y='Survived', hue='Sex', hue_order=['male', 'female'], data=train_df, kind='point', col='Embarked')

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

票数 0
EN

Stack Overflow用户

发布于 2021-06-17 04:16:46

谢谢JohanC。是的,我的FacetGrid情节是错的。我手动检查过了。

代码语言:javascript
复制
train_df[(train_df['Embarked']=='C') & (train_df['Survived']==1)].groupby('Sex').count()['Survived']

产出:

代码语言:javascript
复制
Sex
    female    64
    male      29

女性比男性大。在FacetGrid中,应该指定hue_order,否则可能会产生错误的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67996295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档