在屏幕上显示matplotlib绘图对象
我有一个关于matplotlib图形对象的简单问题。
我在一个名为gauss的函数库中有以下代码,它会返回一个图形:
def plot_3d(X,Y,Z):
fig1 = plt.figure(1)
ax1 = Axes3D(fig1)
surf = ax1.plot_surface(X,Y,Z,cmap=cm.coolwarm)
fig1.colorbar(surf,shrink=0.5,aspect=5)
ax1.set_xlabel('x')
ax1.set_ylabel('y')
ax1.set_zlabel('f(x,y)')
return fig1
在解释器中,我用给定的X、Y、Z运行这段代码。
fig = gauss.plot_3d(X,Y,Z)
然后代码会调用这个对象。但是一旦我关闭了这个对象,我该如何再次调用它呢?
类似于这样的代码:
plt.show(fig)
?
1 个回答
2
在show
这个函数里,传入的参数并不是你想的那样。show
会处理*args
和**kwargs
,但实际上它只是用来判断是否要阻止显示的一个布尔值。
一旦你关闭了一个图形,它就会从pyplot
的活跃图形列表中删除。如果你还保留着这个图形的引用,你可以尝试通过访问图形内部的内容,去操作图形的画布管理器的窗口,重新显示它。
例如(对于qt后端):
fig, ax = plt.subplots()
然后关闭窗口,再执行
fig.canvas.manager.window.show()
应该能让它重新弹出来。