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

matplotlib定义Figure后添加坐标轴调用plt.show()无显示问题求助

问题根因

matplotlib的plt.show()接口默认仅渲染展示被pyplot全局上下文管理的Figure实例:

  • 第一段代码中使用的plt.subplots()、以及小写的plt.figure()都属于pyplot提供的高层封装接口,创建的Figure会自动注册到pyplot全局管理队列,所以可以被plt.show()正常识别渲染。
  • 第二段代码中直接实例化大写的plt.Figure()属于底层面向对象用法,创建的Figure不会自动加入pyplot的管理队列,plt.show()扫描不到该实例,自然无内容显示。

修复方案

方案1:沿用pyplot高层API(最常用)

将fig = plt.Figure()替换为小写的fig = plt.figure()即可,后续调用plt.show()可以正常显示:

import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(10)
plt.show()

方案2:直接调用Figure实例的show方法

如果确实需要直接实例化plt.Figure(),不需要经过pyplot管理,直接调用实例自身的show()方法即可:

import matplotlib.pyplot as plt
fig = plt.Figure()
ax = fig.add_subplot(111)
ax.plot(10)
fig.show()

方案3:手动注册Figure到全局管理(兼容非交互环境)

如果在非交互环境下方案2出现闪退,可以手动将自定义Figure注册到pyplot全局队列,再调用plt.show():

import matplotlib.pyplot as plt
from matplotlib._pylab_helpers import Gcf

fig = plt.Figure()
ax = fig.add_subplot(111)
ax.plot(10)
# 手动注册画布
Gcf.add_figure(fig)
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:45:01