Изменить форму участков на Seaborn PairGrid

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

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)

введите описание изображения здесь

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


person Brian Keegan    schedule 16.12.2014    source источник


Ответы (1)


PairGrid выбирает это выравнивание, потому что оба графика имеют одинаковую ось x. Итак, самый простой способ получить графики в ландшафте - это поменять местами x и y:

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)

(Обратите внимание, что вам также нужно изменить x_jitter на y_jitter, чтобы получить тот же результат.)

Если вы не хотите этого делать, то я думаю, что 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])
person hitzg    schedule 17.12.2014
comment
Да, это тот ответ, который я бы дал! - person mwaskom; 17.12.2014