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

如何阻止PyCharm运行matplotlib代码时覆盖已有绘图结果

解决PyCharm中matplotlib多次运行绘图被覆盖的方案

你可以通过修改代码或者调整PyCharm设置两种方式实现每次运行生成独立绘图,两种方案可以单独使用也可以搭配使用,稳定性更高。

方案1:添加代码适配(全环境通用,优先级最高)

matplotlib默认会复用当前进程的活动画布,旧画布未主动释放时就会出现新绘图覆盖旧图的问题,添加少量代码即可彻底避免该问题:

仅需弹出独立绘图窗口场景

每次绘图前主动创建新画布,运行结束后释放画布资源即可:

import matplotlib.pyplot as plt
import numpy as np

# 新建独立画布,不会复用之前的画布实例
plt.figure()
x = np.linspace(-5, 5, 100)
plt.plot(x, np.sin(x))
plt.show()
# 释放当前画布资源
plt.close()

需要自动保存绘图到本地场景

给文件名添加时间戳/随机数保证文件名唯一,永远不会出现覆盖:

import matplotlib.pyplot as plt
import numpy as np
from datetime import datetime

plt.figure()
x = np.linspace(-5, 5, 100)
plt.plot(x, np.sin(x))
# 用毫秒级时间戳生成唯一文件名
save_name = f"sin_plot_{datetime.now().strftime('%Y%m%d%H%M%S%f')}.png"
plt.savefig(save_name)
plt.show()
plt.close()

方案2:调整PyCharm设置(无需修改代码)

关闭绘图内嵌工具窗口

PyCharm默认会把所有绘图放到侧边的科学工具窗口中复用渲染区域,是覆盖问题的常见诱因,关闭该设置即可:

  • 打开PyCharm设置:Windows/Linux按Ctrl+Alt+S,Mac按Command+,
  • 依次进入Tools > Python Scientific
  • 取消勾选 Show plots in tool window,修改后每次plt.show()都会弹出独立的系统绘图窗口,不会互相覆盖

开启多进程并行运行

如果多次运行时未关闭旧的运行进程,同进程内的画布会被复用,开启并行运行即可隔离每次运行的资源:

  • 点击右上角运行配置下拉框,选择Edit Configurations
  • 找到对应Python文件的运行配置,勾选 Allow parallel run 保存即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:18:02