You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法在循环中基于不同特征生成多个Seaborn countplot图表

问题原因

你的代码每次调用sns.countplot()时,都是在同一个绘图轴(Axes)上绘制,后面的图表会直接覆盖前面的内容;再加上没有显式触发图表渲染,最终只会保留并显示最后一次绘制的结果。

修复方法

有两种常用解决方式,可根据需求选择:

方式1:逐个显示独立图表

每次绘制完一个特征的countplot后,调用plt.show()强制渲染当前图表,每个图会单独弹出显示:

import seaborn as sns
import matplotlib.pyplot as plt

col_list = ['sex', 'class', 'embark_town']

for col in col_list:
    print(col)
    sns.countplot(x=df[col])
    plt.show()  # 触发当前图表的显示

方式2:同一画布展示所有子图

创建多子图布局,把每个特征的图画在不同子图里,一次性展示所有结果:

import seaborn as sns
import matplotlib.pyplot as plt

col_list = ['sex', 'class', 'embark_town']
# 创建3行1列的子图,设置画布大小
fig, axes = plt.subplots(nrows=3, ncols=1, figsize=(8, 12))

for idx, col in enumerate(col_list):
    print(col)
    # 指定当前子图的轴对象
    sns.countplot(x=df[col], ax=axes[idx])
    # 给每个子图添加标题,提升可读性
    axes[idx].set_title(f'{col} 分布统计')

plt.tight_layout()  # 自动调整子图间距,避免标题和标签重叠
plt.show()

内容的提问来源于stack exchange,提问作者PineNuts0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 16:31:33