我已经成功地使用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)
这将不再阻止代码在图形关闭后继续。