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

PyPlot中fig.show()报错,求错误原因及代码修正方法

解决PyPlot中fig.show()触发AttributeError的问题

这个问题我之前也碰到过,其实原因很直白:
你用fig = plt.subplots()的时候,这个函数返回的是一个元组(tuple),里面包含了两个对象:一个是Figure实例,另一个是Axes实例(如果是多子图布局的话会是Axes数组)。而元组本身并没有show()方法,所以调用fig.show()就会抛出AttributeError: 'tuple' object has no attribute 'show'的错误。

修正方法分两种情况:

情况1:不需要单独控制坐标轴(Axes)

如果你只是做简单绘图,不需要精细定制子图或坐标轴,可以改用plt.figure()来创建单独的Figure对象,这样fig就是一个合法的Figure实例,能正常调用show():

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(100)
fig = plt.figure()  # 创建单个Figure对象
plt.plot(x)
plt.show()
fig.show()

情况2:需要使用坐标轴(Axes)做精细绘图

如果需要对子图、坐标轴做更多定制(比如设置刻度、标签、多子图布局),那就要把plt.subplots()的返回值拆包,分别拿到Figure和Axes对象:

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(100)
fig, ax = plt.subplots()  # 拆包得到Figure和Axes对象
ax.plot(x)  # 用Axes对象调用plot方法,比plt.plot()更灵活
plt.show()
fig.show()

另外补充一句:其实plt.show()已经会弹出图形窗口了,fig.show()在很多环境下会重复显示图形,你可以根据自己的需求选择是否保留~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 16:02:42