更改facetgrid上每个hist facet的颜色?

时间:2016-11-01 14:40:12

标签: python pandas matplotlib seaborn

我使用了来自kaggle的泰坦尼克数据集,我想通过不同的颜色区分幸存者(1)与非幸存者(0)的方面。

这是我目前的FacetGrid:

enter image description here

左侧(图表)是那些没有生存的人。我希望那些颜色为红色。正确的方面是正确的方面。

所以我想要的输出看起来像这样。 我还想为每个方面添加一个简单的图例(红色 =' Died',蓝色 =' Survived' ) enter image description here

以下是一个示例数据框Full Set

               Sex    Survived
PassengerId                  
1              male         0
2            female         1
3            female         1
4            female         1
5              male         0
6              male         0
7              male         0
8              male         0
9            female         1
10           female         1
11           female         1
12           female         1
13             male         0
14             male         0
15           female         0
16           female         1
17             male         0
18             male         1
19           female         0

以下是我目前的代码:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style ="ticks")
h=sns.FacetGrid(Full_set, col ='Survived', row ='Sex', palette = 'Set1', size =2, aspect =2)
h =h.map(plt.hist, 'Age')


plt.show()

我在文档(http://seaborn.pydata.org/generated/seaborn.FacetGrid.html#seaborn.FacetGrid)中浏览了FacetGrid的API,但我没有看到任何示例或方法来执行我想要的操作。 编辑:

我试过了hue,但我遇到的问题是,在一个直方图上,图形最终重叠,并完全用较小的值覆盖图形。 谢谢!

1 个答案:

答案 0 :(得分:3)

hue参数与groupby对象的工作方式类似。因此,当根据 Survived 列设置hue时,它将成为其唯一值(即0和1)的单独实体。然后使用它的关键字arg,输入要为每个分组实例显示的颜色(0→红色,1→蓝色)。

可能性1:

d = {'color': ['r', 'b']}
g = sns.FacetGrid(df, row='Sex', col='Survived', hue_kws=d, hue='Survived')
g.map(plt.hist, 'Age')

可能性2:

g = sns.FacetGrid(df, row='Sex', col='Survived', hue='Survived', palette='Set1')
g.map(plt.hist, 'Age')

Image