如何订购seaborn pointplot

sdd*_*sdd 3 kernel python-3.x seaborn kaggle

这是来自 kaggle Titanic 竞赛内核的代码:

grid = sns.FacetGrid(train_df, row='Embarked', size=2.2, aspect=1.6)
grid.map(sns.pointplot, 'Pclass', 'Survived', 'Sex', palette='deep')
grid.add_legend()
Run Code Online (Sandbox Code Playgroud)

它会产生错误的情节,即颜色相反的情节。我想知道如何修复这个确切的代码片段。我尝试将关键字参数添加到 grid.map() 调用 - order=["male", "female"], hue_order=["male", "female"],但随后图变空。

Imp*_*est 8

在对 的代码调用中grid.map(sns.pointplot, 'Pclass', 'Survived', 'Sex', palette='deep'),x 类别是Pclass,色调类别是Sex。因此你需要添加

order = [1,2,3], hue_order=["male", "female"]
Run Code Online (Sandbox Code Playgroud)

完整的例子(我在那里拿了 seaborn 附带的泰坦尼克号 - 什么文字游戏!):

import seaborn as sns
import matplotlib.pyplot as plt

df = sns.load_dataset("titanic")

grid = sns.FacetGrid(df, row='embarked', size=2.2, aspect=1.6)
grid.map(sns.pointplot, 'pclass', 'survived', 'sex', palette='deep', 
             order=[1,2,3], hue_order=["female","male"])
grid.add_legend()

plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

请注意,虽然hue_order绝对需要,但您可以省略order. 虽然这会发出警告,但正确的顺序是由这些值是数字并因此自动排序的事实来保证的。