seaborn FacetGrid中的Hue参数

时间:2016-04-26 11:15:58

标签: matplotlib seaborn

我遇到Facetgrid问题:当我使用 hue 参数时,x标签显示的顺序错误且与数据不匹配。在ipython中加载泰坦尼克号数据集:

%matplotlib inline
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

titanic = sns.load_dataset("titanic")
g = sns.FacetGrid(titanic, col='pclass', hue='survived')
g = g.map(sns.swarmplot, 'sex', 'age')

与顺化的Facetgrid: Facetgrid with Hue

从这看起来似乎女性多于男性,但事实并非如此。

如果我现在删除了 hue 选项,那么我会得到正确的分布:所有pclass中的男性多于女性。

g = sns.FacetGrid(titanic, col='pclass')
g = g.map(sns.swarmplot, 'sex', 'age')

没有色调的Facetgrid: Facetgrid without Hue

这里发生了什么? 我正在使用Seaborn 0.7.0

1 个答案:

答案 0 :(得分:4)

如果您要将FacetGrid与其中一个分类绘图功能结合使用,则需要通过将变量声明为分类或使用orderhue_order来提供订单信息参数:

g = sns.FacetGrid(titanic, col='pclass', hue='survived')
g = g.map(sns.swarmplot, 'sex', 'age', order=["male", "female"], hue_order=[0, 1])

enter image description here

但是,通常最好使用factorplot,它将为您处理这个簿记,并为您节省一些打字:

g = sns.factorplot("sex", "age", "survived", col="pclass", data=titanic, kind="swarm")

enter image description here