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

如何在Spyder的Plots窗口中查看循环生成的各列图表?

循环绘制DataFrame列图表仅显示最后一个的解决方法

你遇到的问题是因为循环中所有Seaborn图表都绘制在了同一个matplotlib画布上,后续图表会覆盖之前的内容,最终只保留最后一个。下面是两种可行的解决方式:

方式一:每次循环创建新画布

通过matplotlib.pyplot的figure()函数,在每次绘制前生成新的画布,这样每列的图表会单独创建,在Spyder的Plots窗口中可以通过顶部的切换按钮查看所有图表:

import pandas as pd 
import seaborn as sns
import matplotlib.pyplot as plt  # 导入matplotlib绘图模块

df = pd.DataFrame({
    'Sex': ['M', 'M', 'F'],
    'Age': ['19', '88','14'] 
})
 
for col in df.columns:
    c = df.groupby(col)[col].count()
    plt.figure()  # 为当前列创建新画布
    sns.barplot(x=c.index, y=c.values)
    plt.title(f'{col} 列计数分布')  # 可选:添加标题区分不同图表

方式二:逐个显示并清空画布

如果希望逐个查看图表(关闭当前图后才会显示下一个),可以在每次绘图后调用show()显示当前图,再用clf()清空画布:

import pandas as pd 
import seaborn as sns
import matplotlib.pyplot as plt

df = pd.DataFrame({
    'Sex': ['M', 'M', 'F'],
    'Age': ['19', '88','14'] 
})
 
for col in df.columns:
    c = df.groupby(col)[col].count()
    sns.barplot(x=c.index, y=c.values)
    plt.title(f'{col} 列计数分布')
    plt.show()  # 弹出窗口显示当前图表
    plt.clf()  # 清空画布,准备绘制下一个图表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 00:25:55