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

使用matplotlib绘制单个散点图 如何避免运行代码时出现多图

matplotlib单次运行仅生成单张散点图的解决方案

这个问题的核心是matplotlib会默认保留全局状态中未被关闭的画布实例,连续运行代码时,前一次运行创建的画布如果没有被正确清理,就会和新创建的画布叠加,出现多次运行弹出多图的情况。你可以通过以下任意一种方法解决:

  • 方案1:绘图前主动清理所有已有画布
    在代码开头添加plt.close('all'),强制关闭所有已创建的未显示/未关闭的画布,保证每次运行都是全新的画布环境。修改后代码如下:
plt.close('all')
plt.figure()
plt.scatter(x[:2], y[:2], s=100, c='red', label='Tall students')
plt.scatter(x[2:], y[2:], s=100, c='blue', label='Short students')
plt.show()

如果仅需要清空当前画布而非关闭所有历史画布,也可以将plt.close('all')替换为plt.clf()。

  • 方案2:使用面向对象的显式画布管理写法
    直接显式绑定画布和轴对象,避免依赖matplotlib的全局状态,从根源上避免状态残留问题,写法更稳定可靠,示例代码:
fig, ax = plt.subplots()
ax.scatter(x[:2], y[:2], s=100, c='red', label='Tall students')
ax.scatter(x[2:], y[2:], s=100, c='blue', label='Short students')
ax.legend()
plt.show()
  • 方案3:Jupyter环境补充配置
    如果是在Jupyter Notebook/Lab中运行,可以在代码开头添加魔法命令%matplotlib inline,该配置会让每次绘图后自动释放画布资源,避免累积。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 13:27:04