在屏幕上显示matplotlib绘图对象

0 投票
1 回答
846 浏览
提问于 2025-04-18 11:14

我有一个关于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()

应该能让它重新弹出来。

撰写回答