在使用matplotlib的过程中,常常会需要画很多图,但是好像并不能同时展示许多图?这是因为python可视化库matplotlib的显示模式默认为阻塞(block)模式。
-
pycharm(IDE)
使用plt.ion()这个函数,使matplotlib的显示模式转换为交互(interactive)模式。即使在脚本中遇到 plt.show(),代码还是会继续执行。
-
linux交互编译器
交互式编译器直接采用的就是“交互模式”,显示图像使用plt.imshow(x)即可,可使用plt.figure()展示多个窗口。不需要在后面加plt.show(),虽然加了也不会报错,但会开启“阻塞模式”,需要关闭图像才可继续运行后续代码。针对显示图像秒关的问题,可以在plt.imshow(x)后加上plt.pause(15),数字代表秒数。 -
在交互模式下
- plt.plot(x)或plt.imshow(x)直接显示图像,不需要补充添加plt.show()。
- 如果在脚本中使用ion()命令开启了交互模式,没有使用ioff()关闭的话,则图像会一闪而过,并不会常留。要想防止这种情况,需要在plt.show()之前加上ioff()命令。
-
在阻塞模式下:
- 打开一个窗口以后必须关掉才能打开下一个新的窗口。这种情况下,默认是不能像Matlab一样同时开很多窗口进行对比的。使用plt.show()之后,程序会暂停该语句处,并不会继续执行下去。只有关闭当前图片,程序才可以继续执行。
- plt.plot(x)或plt.imshow(x)是直接出图像,需要plt.show()后才能显示图像.