Присвойте каждый из ваших графиков такой переменной, как g
, и используйте plt.close(g.fig)
, чтобы удалить ненужные субплоты. Или переберите все переменные типа sns.axisgrid.FacetGrid
и закройте их следующим образом:
for p in plots_names:
plt.close(vars()[p].fig)
Полный фрагмент кода ниже делает именно это. Обратите внимание, что я загружаю набор данных titani c, используя train_df = sns.load_dataset("titanic")
. Здесь все имена столбцов в нижнем регистре в отличие от вашего примера. Я также удалил аргумент palette=col_pal
, поскольку col_pal
не определен в вашем фрагменте.
Сюжет:
Код:
import seaborn as sns
import matplotlib.pyplot as plt
plt.rcParams['figure.figsize'] = [12, 8]
fig, axes = plt.subplots(nrows=3, ncols=2)
plt.tight_layout()
train_df = sns.load_dataset("titanic")
g = sns.catplot(x='pclass', y='age', data=train_df, kind='box', height=8, ax=axes[0, 0])
h = sns.catplot(x='embarked', y='age', data=train_df, kind='box', height=8, ax=axes[0, 1])
i = sns.catplot(x='sex', y='age', data=train_df, kind='box', height=8, ax=axes[1, 0])
j = sns.catplot(x='sex', y='age', hue='pclass', data=train_df, kind='box', height=8, ax=axes[1, 1])
k = sns.catplot(x='sibsp', y='age', data=train_df, kind='box', height=8, ax=axes[2, 0])
l = sns.catplot(x='parch', y='age', data=train_df, kind='box', height=8, ax=axes[2, 1])
# iterate over plots and run
# plt.close() to prevent duplicate
# subplot setup
var_dict = vars().copy()
var_keys = var_dict.keys()
plots_names = [x for x in var_keys if isinstance(var_dict[x], sns.axisgrid.FacetGrid)]
for p in plots_names:
plt.close(vars()[p].fig)
Обратите внимание, что вам придется присвоить свои графики именам переменных для этого работать. Если вы просто добавите фрагмент, закрывающий графики, в конец исходного фрагмента, настройка дубликата вспомогательного участка останется нетронутой.
Код 2:
import seaborn as sns
import matplotlib.pyplot as plt
plt.rcParams['figure.figsize'] = [12, 8]
fig, axes = plt.subplots(nrows=3, ncols=2)
plt.tight_layout()
train_df = sns.load_dataset("titanic")
_ = sns.catplot(x='pclass', y='age', data=train_df, kind='box', height=8, ax=axes[0, 0])
_ = sns.catplot(x='embarked', y='age', data=train_df, kind='box', height=8, ax=axes[0, 1])
_ = sns.catplot(x='sex', y='age', data=train_df, kind='box', height=8, ax=axes[1, 0])
_ = sns.catplot(x='sex', y='age', hue='pclass', data=train_df, kind='box', height=8, ax=axes[1, 1])
_ = sns.catplot(x='sibsp', y='age', data=train_df, kind='box', height=8, ax=axes[2, 0])
_ = sns.catplot(x='parch', y='age', data=train_df, kind='box', height=8, ax=axes[2, 1])
# iterate over plots and run
# plt.close() to prevent duplicate
# subplot setup
var_dict = vars().copy()
var_keys = var_dict.keys()
plots_names = [x for x in var_keys if isinstance(var_dict[x], sns.axisgrid.FacetGrid)]
for p in plots_names:
plt.close(vars()[p].fig)
Участок 2: