调用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)

?

show上的参数并不像您想象的那样。show吃掉*args, **kwargs,但它实际上只是被传递给bool,如果它应该阻塞或不阻塞。

一旦您关闭了一个图形,它将从pyplot的活动图形注册表中删除。如果您仍然有对图形的引用,则可以尝试通过进入图形的内部并戳到图形画布的管理器窗口来再次显示它。

ex(用于qt后端):

fig, ax = plt.subplots()

然后关闭窗口,然后

fig.canvas.manager.window.show()

应该会让它重新弹出

最新更新