在seaborn猫图中指定颜色

时间:2018-08-09 17:03:07

标签: python-3.x matplotlib seaborn

我想使用seaborn猫图来指定特定观察结果的颜色。在一个虚构的例子中:

import seaborn as sns
import random as r

name_list=['pepe','Fabrice','jim','Michael']
country_list=['spain','France','uk','Uruguay']
favourite_color=['green','blue','red','white']

df=pd.DataFrame({'name':[r.choice(name_list) for n in range(100)],
             'country':[r.choice(country_list) for n in range(100)],
             'fav_color':[r.choice(favourite_color) for n in range(100)],
             'score':np.random.rand(100),
            })

sns.catplot(x='fav_color',
           y='score',
           col='country',
           col_wrap=2,
           data=df,
           kind='swarm')

我想为所有观测值上色(或用另一种独特的方式标记,也可以是标记),名称为“ pepe”。我该怎么做?我不介意其他颜色,如果它们都一样会更好。

catplot exemple

1 个答案:

答案 0 :(得分:1)

您可以通过向数据框添加布尔列并将其用作hue调用的catplot()参数来获得所需的结果。这样,您将获得两种颜色的结果(一种用于pepe观测值,另一种用于其他观测值)。结果可以在这里看到:

还应该设置参数legend=False,因为否则is_pepe的图例将出现在侧面。

代码如下:

df['is_pepe'] = df['name'] == 'pepe'

ax  = sns.catplot(x='fav_color',
                  y='score',
                  col='country',
                  col_wrap=2,
                  data=df,
                  kind='swarm',
                  hue='is_pepe',
                  legend=False) 

此外,您可以使用参数palette和顶级功能sns.color_palette()为两种观测值(pepe和notpepe)指定所需的两种颜色,如下所示:< / p>

ax  = sns.catplot(x='fav_color',
                  y='score',
                  col='country',
                  col_wrap=2,
                  data=df,
                  kind='swarm',
                  hue='is_pepe',
                  legend=False,
                  palette=sns.color_palette(['green', 'blue']))

获得此结果: