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

使用Seaborn生成两张图表时第二张图覆盖第一张的问题如何解决?

问题原因

你遇到的图片覆盖问题核心是Matplotlib的全局画布机制:默认情况下所有绘图操作都会在当前激活的画布上执行,第一张图绘制保存后没有释放画布,第二张图的内容会直接叠加到原有画布上,导致输出结果异常。

修复方案

你可以选择以下任意一种方法解决:

方法1:绘制保存后关闭当前画布

每次保存完一张图后调用plt.close()释放画布资源,后续绘图会自动创建新的空白画布。

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

iris = sns.load_dataset('iris')

sns.pairplot(iris)
plt.savefig("Pairplot")
# 释放当前画布
plt.close()

# 仅选取数值列计算相关性,避免高版本Pandas报错
sns.heatmap(iris.select_dtypes('number').corr())
plt.savefig("heatmap")
plt.close()

方法2:显式创建独立画布

为每张图单独声明画布对象,绘图逻辑完全隔离,更适合复杂的多图绘制场景,也方便单独调整每张图的样式参数。

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

iris = sns.load_dataset('iris')

# 第一张图独立画布
plt.figure()
sns.pairplot(iris)
plt.savefig("Pairplot")

# 第二张图独立画布
plt.figure(figsize=(8, 6))
sns.heatmap(iris.select_dtypes('number').corr())
plt.savefig("heatmap")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 10:18:02