matplotlib情节和imshow

use*_*100 12 python matplotlib

matplotlib的情节和imshow的行为让我感到困惑.

import matplotlib as mpl
import matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)

如果我在调用plt.imshow(i)之前调用plt.show(),则会产生错误.如果我在调用plt.show()之前调用plt.imshow(i),那么一切都很完美.但是,如果我关闭第一个打开的数字,然后调用plt.imshow(i),则会显示一个新数字,而不会调用pl​​t.show().

有人可以解释一下吗?

Joe*_*ton 22

如果我在调用plt.imshow(i)之前调用plt.show(),则会产生错误.如果我在调用plt.show()之前调用plt.imshow(i),那么一切都很完美.

plt.show()显示图形(并进入你正在使用的任何gui后端的主循环).在绘制完东西并想要看到它们之前,你不应该打电话给它.

plt.imshow()在当前图形上绘制图像(创建图形是没有当前图形).plt.show()在你画出任何东西之前打电话没有任何意义.如果您想要明确地创建一个新的数字,请使用plt.figure().

...显示一个新的数字,而不会调用pl​​t.show().

除非你在类似于ipython的pylab模式下运行代码,否则这种情况不会发生,其中gui后端的mainloop将在一个单独的线程中运行...

一般来说,plt.show()将是脚本的最后一行.(或者无论何时你想停下来想象你制作的情节,都会被调用.)

希望这会更有意义.

  • 如果要显示一系列图像,短暂暂停以显示每个图像,然后转到下一个图像,您会怎么做?您必须在某个时刻调用show(),但如果这样做,则无法执行其余代码以显示下一个图像. (2认同)