2016-05-19 4 views
0

Я создал образец данных, установленных для этого quesitionSeaborn Facetgrid countplot Оттенок

import pandas as pd 
from pandas import DataFrame 
import seaborn as sns 
import numpy as np 


sex = np.array(['Male','Female']) 
marker1 = np.array(['Absent','Present']) 
marker2 = np.array(['Absent','Present']) 

sample1 = np.random.randint(0,2,100) 
sample2 = np.random.randint(0,2,100) 
sample3 = np.random.randint(0,2,100) 

df=pd.concat([pd.Series(sex.take(sample1),dtype='category'),pd.Series(marker1.take(sample2),dtype='category'),pd.Series(marker2.take(sample3),dtype='category')],axis=1) 

df.rename(columns={0:'Sex',1:'Marker1',2:'Marker2'},inplace=True) 

fig =sns.FacetGrid(data=df,col='Sex',hue='Marker2',palette='Set1',size=4,aspect=1).map(sns.countplot,'Marker1',order=df.Marker1.unique()).add_legend() 

Сюжет создает этот код сложенной сюжет enter image description here То, что я хочу, чтобы создать это участок додж (от R). Как я могу изменить этот код, чтобы я мог видеть сравнение бок о бок Marker2 наличие?

+1

Используйте 'factorplot'. – mwaskom

+0

@mwaskom '' 'factorplot''' дает мне TypeError. Ошибка: '' 'TypeError: объект типа 'NoneType' не имеет len()' '' –

+0

Трудно сказать, что вызвало ошибку, не зная, что вы сделали. – mwaskom

ответ

0

У меня была такая же проблема, и это сработало для меня.

Вы можете просто написать функцию обертки для вызова sns.countplot, чтобы использовать команду FacetGrid.

def countplot(x, hue, **kwargs): 
    sns.countplot(x=x, hue=hue, **kwargs) 

grid = sns.FacetGrid(data=df,col='Sex',size=4,aspect=1) 
fig = grid.map(countplot,'Marker1','Marker2',palette='Set1',order=df.Marker1.unique()) 
fig.add_legend() 
Смежные вопросы