如何删除 运行 for 循环创建 seaborn 图时创建的额外数字
How to remove the extra figures created when running a for loop to create seaborn plots
我正在尝试进行 EDA 以及探索 Matplotlib 和 Seaborn 库。
data_cat DataFrame 有 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 函数生成的额外图形对象。
您的代码没有按预期工作,因为 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')
我回答了一个相关问题。
我正在尝试进行 EDA 以及探索 Matplotlib 和 Seaborn 库。
data_cat DataFrame 有 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 函数生成的额外图形对象。
您的代码没有按预期工作,因为 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')
我回答了一个相关问题