1. plt.ion()
, plt.ioff(
)和plt.show()
的关系
Matplotlib 的默认显示模式是阻塞(block)模式
也就是程序运行到plt.show()之后会停在那里,关掉窗口后才能继续执行后面的代码
这种情况已经遇到过很多次了,因此需要plt.ion()进入交互(interactive)模式
也就是说程序运行到plot.show()之后还是会继续运行
但是这样的话,一定不要忘记在plt.show()之前加上plt.ioff()
否则,图像会一闪而过
在阻塞模式下:
1、打开一个窗口以后必须关掉才能打开下一个新的窗口。
2、plt.plot(x)或plt.imshow(x)是需要plt.show()后才能显示图像。
在交互模式下:
1、plt.plot(x)或plt.imshow(x)是直接出图像,不需要plt.show()。
参考链接:https://blog.youkuaiyun.com/weixin_42782150/article/details/107015617
2. plt.cla()
只清楚窗口中的活动轴,其他轴保持不变
3. 使用plt.close()
直接关闭窗口,一遍后面的窗口可以打开
下面就用上面所学到的知识分析一下这段代码
plt.ion() 交互模式打开,意味着plot等不需要show就可以自动显示了
for idx in range(BATCH_SIZE):
plt.cla() 将之前画的擦除掉
plt.plot(PAINT_POINTS[0], 2 * np.power(PAINT_POINTS[0], 2) + 1, c="b", lw=3, label="upper bound")
plt.plot(PAINT_POINTS[0], 1 * np.power(PAINT_POINTS[0], 2) + 0, c="g", lw=3, label="lower bound")
plt.legend(loc="upper right")
plt.plot(PAINT_POINTS[0], paintings[idx], label=f"{idx}")
plt.pause(0.1)
plt.legend(loc="upper right")
plt.ioff() 关闭交互模式,又回到阻塞模式,那么窗口需要手动关闭才能执行后面的代码了
plt.show() 之所以要关闭交互模式,是为了方便看图,想自动继续执行后面的代码,删除这句