pyplot:关闭 show() 窗口不会继续代码



我已经成功地使用pyplot来显示热图。今天它好像不工作了。

我的问题是设置我的情节,然后调用show()方法在窗口中显示图形,但是当我关闭此窗口(通过单击顶部的x)时,我的代码不会继续过去调用show()方法的地方。它似乎挂在show()上。

matrix是一个numpy矩阵。

这是我的代码的一个例子:
plt.pcolor(matrix, cmap=plt.cm.binary)
plt.xlabel('xaxis', fontsize=20)
plt.ylabel('yaxis', fontsize=20)
plt.axis([0, matrix.shape[1], 0, matrix.shape[0]])
plt.colorbar()
#This is where my code hangs...
plt.show()
#Closing the window manually does nothing.
#And the close() method doesn't seem to do anything.
plt.close()

调用show()方法后,窗口关闭,我的进程继续运行,我必须手动终止它。

有谁知道发生这种情况的原因吗?

如果您使用的是tkinter:

在与pyplot一起使用tkinter(选择包含绘图数据的文件)时,我遇到了同样的问题。我发现,通过在我的tkinter.Tk()对象上调用root.destroy,关闭plt.show()创建的窗口允许我的代码继续而不是挂起。

您是否尝试在plt.show()之前设置plt.ion() ?这会设置交互模式,并且show不会停止脚本的执行。

因为plt.show()是一个"阻塞函数",直到关闭图形代码才会恢复。在关闭图形之前,它甚至不会到达plt.close(),因为它写在plt.show()

之后。

最近你似乎可以这样做:

plt.show(block=False)

这将不再阻止代码在图形关闭后继续。

最新更新