Seaborn FacetGrid строит две разные оси Y рядом друг с другом

Это работает, но я уверен, что должен быть способ сделать это через FacetGrid. Я представляю какой-то параметр, через который вы можете получить доступ к тому месту, где расположена диаграмма в сетке. Или, может быть, это считалось избыточным, и использование plt.subplots - это способ доступа к оси сетки.

fig, (ax1, ax2) = plt.subplots(nrows=1, ncols=2)
sns.catplot(x='not.fully.paid', y='int.rate', kind='box', data=loans, ax=ax1)
sns.catplot(x='not.fully.paid', y='fico', kind='box', data=loans, ax=ax2)

Даже когда я это вызываю, это выводится на дисплей ...

<seaborn.axisgrid.FacetGrid at 0x1a314b6c50>

Конечно, я получил свой график двух графиков рядом друг с другом, но внизу пустая сетка фасетов.


person Yale Newman    schedule 05.10.2018    source источник


Ответы (1)


На самом деле удивительно, что этот код работает. sns.catplot() предназначен для печати на FacetGrid и не предназначен для использования так, как вы его используете.

Я думаю, вам следует использовать sns.boxplot() напрямую:

fig, (ax1, ax2) = plt.subplots(nrows=1, ncols=2)
sns.boxplot(x='not.fully.paid', y='int.rate', kind='box', data=loans, ax=ax1)
sns.boxplot(x='not.fully.paid', y='fico', kind='box', data=loans, ax=ax2)

Если вы действительно хотите использовать catplot, вам придется преобразовать фрейм данных так, чтобы все значения y были в одном столбце, с дополнительным столбцом категории, указывающим тип значения (int.rate / fico), а затем вызвать:

sns.catplot(x='not.fully.paid', y='<values column>', col='<category column>', kind='box', data=loans)

и seaborn автоматически подберет правильные подзаголовки, чтобы учесть количество уникальных категорий в столбце вашей категории.

person Diziet Asahi    schedule 05.10.2018
comment
Это избавляет от пустого FacetGrid, но нет ли способа с FacetGrid передавать различные функции построения графиков и параметры, связанные с этими функциями, более аналогично тому, как PairGrid поддерживает map_diag и map_upper? - person Yale Newman; 05.10.2018
comment
Нет, FacetGrid предназначен для разделения данных на несколько категорий и построения одинаковых отношений с помощью одной и той же функции построения графиков для всех категорий для облегчения сравнения. - person Diziet Asahi; 05.10.2018
comment
Ах, было бы здорово иметь возможность передать FacetGrid список значений Y, но спасибо, что прояснили это - person Yale Newman; 05.10.2018