我已成功使用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()
方法后,窗口关闭,我的进程继续运行,我必须手动终止它。
有谁知道发生这种情况的原因?
答案 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)
在关闭图形后,这将不再阻止代码继续执行。