Как убрать лишние фигуры, созданные при запуске для l oop для создания морских участков - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь сделать EDA вместе с изучением библиотек Matplotlib и Seaborn.

DataFrame data_cat имеет 4 столбца, и я хочу создать графики в одной строке из 4 столбцов. Для этого я создал объект-фигуру с 4-мя осевыми объектами.

fig, ax = plt.subplots(1,4, figsize = (16,4))
for i in range(len(data_cat.columns)):
    sns.catplot(x = data_cat.columns[i], kind = 'count', data = data_cat, ax= ax[i])

Выходные данные для него - это фигура с 4 графиками (как требуется), но за ней следуют 4 пустых графика, которые я считаю дополнительные объекты фигур, сгенерированные функцией sns.catplot.

1 Ответ

1 голос
/ 16 апреля 2020

Ваш код работает не так, как задумано, потому что sns.catplot() - это функция уровня фигуры, которая предназначена для создания собственной сетки подзаговоров при желании. Поэтому, если вы хотите настроить сетку подзаговоров непосредственно в matplotlib, как вы делаете с первой строкой, вам следует вместо этого использовать соответствующую функцию уровня осей, в этом случае sns.countplot():

fig, ax = plt.subplots(1, 4, figsize = (16,4))
for i in range(4):
    sns.countplot(x = data_cat.columns[i], data = data_cat, ax= ax[i])

В качестве альтернативы, Вы можете использовать метод pandas 'df.melt(), чтобы привести в порядок ваш набор данных, чтобы все значения из ваших четырех столбцов были в одном столбце (скажем, 'col_all'), и у вас был другой столбец (скажем, 'subplot'), который идентифицирует из какой исходный столбец имеет каждое значение. Тогда вы можете получить все вспомогательные участки одним вызовом:

sns.catplot(x='col_all', kind='count', data=data_cat, col='subplot')

Я ответил на связанный вопрос здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...