使用matplotlib中的show()和close()

xar*_*les 10 python matplotlib show

我遇到matplotlib的一些问题....我无法一次打开2个窗口显示带有show()的图像,似乎脚本在我使用show的行停止并且不会继续,除非我关闭手动显示.有没有办法在脚本中关闭图形窗口?

以下代码不能按我的意愿运行:

import matplotlib.pyplot as plt
from time import sleep
from scipy import eye

plt.imshow(eye(3))
plt.show()
sleep(1)
plt.close()
plt.imshow(eye(2))
plt.show()
Run Code Online (Sandbox Code Playgroud)

我预计第一个窗口会在1秒后关闭,然后打开第二个窗口,但窗口不会关闭,直到我自己关闭它.我做错了什么,或者它应该是这样的?

sta*_*nri 11

plt.show()是一个阻塞函数.

基本上,如果你想一次打开两个窗口,你需要创建两个数字,然后在末尾使用plt.show()来显示它们.事实上,一般的经验法则是你设置你的情节,而plt.show()是你做的最后一件事.

所以在你的情况下:

fig1 = plt.figure(figsize=plt.figaspect(0.75))
ax1 = fig1.add_subplot(1, 1, 1)
im1, = plt.imshow(eye(3))

fig2 = plt.figure(figsize=plt.figaspect(0.75))
ax2 = fig2.add_subplot(1, 1, 1)
im2, = plt.imshow(eye(2))

plt.show()
Run Code Online (Sandbox Code Playgroud)

您可以使用切换图axes(ax2).

我整理了一个全面的例子来说明为什么情节功能是阻塞的,以及它如何用于回答另一个问题:https://stackoverflow.com/a/11141305/1427975.