2016-11-01 3 views
1

Я использую титанический набор данных из kaggle, и я хотел бы различать грани выживших (1) и Non-Survivors (0) с помощью разных цветов.Изменение цвета каждой грани гистограммы на фасетгриде?

Вот мой текущий FacetGrid:

enter image description here

Левые фасеты (графики) из тех, кто не выжил. Я хочу, чтобы они были окрашены в красный цвет. Правильные грани в порядке, как сейчас.

Так что мой желаемый результат будет выглядеть примерно так. Я также хотел бы добавить простую легенду каждую фасетку (красного цвета = «Умер», синего цвета = «Выжил») enter image description here

Вот пример dataframe 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() 

Я прошел через API в FacetGrid в документация (http://seaborn.pydata.org/generated/seaborn.FacetGrid.html#seaborn.FacetGrid), но я не видел никаких примеров или способов делать то, что я желаю. EDIT:

Я пробовал hue, но проблема, с которой я столкнулась, заключалась в том, что на гистограмме границы перекрывались и полностью покрывали график меньшими значениями. Спасибо!

+0

Пробовали ли вы 'hue'? – mwaskom

+0

Да, я попробовал 'hue', но проблема, с которой я столкнулся, заключалась в том, что в истории гистограммы оказались перекрывающимися и полностью покрывали график меньшими значениями. – Moondra

+1

@moondra, вы можете попробовать: 'g = sns.FacetGrid (Full_set, row =" Sex ", col =" Survived ", hue_kws = {'color': ['r', 'b']}, hue =" Выжил "); g.map (plt.hist, "Age") '? –

ответ

3

Параметр hue работает аналогично объекту groupby. Итак, когда hue установлен в соответствии с столбцом Survived, он становится отдельным объектом для его уникальных значений (а именно, 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

+1

Спасибо. Я никогда не думал об установке столбцов # и # оттенка как «выживших». Я всегда предполагал, что это всегда было одно или другое. – Moondra

+1

Здесь вам не нужно 'hue_kws'; используйте параметр 'palette'. – mwaskom

Смежные вопросы