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

时间:2015-06-08 16:43:54

标签: python matplotlib

我已成功使用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()方法后,窗口关闭,我的进程继续运行,我必须手动终止它。

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

4 个答案:

答案 0 :(得分:1)

您是否尝试在plt.ion()之前的某个时间设置plt.show()。这应该设置交互模式,show不会停止脚本的执行。

答案 1 :(得分:1)

如果您使用的是tkinter:

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

答案 2 :(得分:0)

因为plt.show()是一个“阻塞函数”,并且在关闭图形之前代码不会恢复。在关闭数字之前它甚至不会到达plt.close(),因为它是在plt.show()之后写的

答案 3 :(得分:0)

最近看起来好像可以做到:

plt.show(block=False)

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