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
相关产品推荐
相关产品推荐

