2014-12-16 3 views
1

Мне очень нравится функциональность Seaborn's PairGrid. Тем не менее, я не смог переделать подзаголовки к моему удовлетворению. Например, приведенный ниже код вернет цифру с 1 столбцом и 2 строками, отражающими 1 переменную x и 2 y-переменные.Переделать подзаголовки на Seaborn PairGrid

import seaborn as sns 
tips = sns.load_dataset('tips') 
g = sns.PairGrid(tips,y_vars=['tip','total_bill'],x_vars=['size'], hue='sex') 
g.map(sns.regplot,x_jitter=.125) 

enter image description here

Тем не менее, было бы гораздо предпочтительнее для меня, чтобы переориентировать эту цифру, чтобы иметь 2 колонки и 1 строку. Похоже, что эти подзаголовки живут в пределах g.axes, но как передать их обратно в функцию plt.subplots(1,2)?

ответ

5

PairGrid выбирает это выравнивание, потому что обе графики имеют одинаковую ось x. Так, самый простой способ, чтобы получить участки в альбомной бы поменять местами х и у: (. Обратите внимание, что вы должны изменить x_jitter к y_jitter, чтобы получить тот же результат)

import seaborn as sns 
tips = sns.load_dataset('tips') 
g = sns.PairGrid(tips,x_vars=['tip','total_bill'],y_vars=['size'], hue='sex') 
g.map(sns.regplot,y_jitter=.125) 

Если вы дон Я не хочу этого делать, тогда я думаю, что PairGrid не подходит для вас. Вы также можете просто использовать два подзаговоры и создать графики с помощью sns.regplot:

import seaborn as sns 
import matplotlib.pyplot as plt 

tips = sns.load_dataset('tips') 
male = tips[tips.sex=='Male'] 
female = tips[tips.sex=='Female'] 

with sns.color_palette(n_colors=2): 
    fig, axs = plt.subplots(1,2) 
    sns.regplot(x='size', y='tip', data=male, x_jitter=.125, ax=axs[0]) 
    sns.regplot(x='size', y='tip', data=female, x_jitter=.125, ax=axs[0]) 
    sns.regplot(x='size', y='total_bill', data=male, x_jitter=.125, ax=axs[1]) 
    sns.regplot(x='size', y='total_bill', data=female, x_jitter=.125, ax=axs[1]) 
+0

Да, это ответ, который я дал бы! – mwaskom

+0

@Brian, это решает вашу проблему? – hitzg

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