Ваш код работает не так, как задумано, потому что 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')
Я ответил на связанный вопрос здесь .