如何在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
相关产品推荐
相关产品推荐

