基于matplotlib中ion()和ioff()的使用详解

作者:一只小Kevin 时间:2021-11-23 17:54:27 

介绍

在使用matplotlib的过程中,发现不能像matlab一样同时开几个窗口进行比较,于是查询得知了交互模式,但是放在脚本里运行的适合却总是一闪而过,图像并不停留,遂仔细阅读和理解了一下文档,记下解决办法,问题比较简单,仅供菜鸟参考。

python可视化库matplotlib有两种显示模式:

阻塞(block)模式

交互(interactive)模式

在Python Consol命令行中,默认是交互模式。而在python脚本中,matplotlib默认是阻塞模式。

其中的区别是:

在交互模式下:

plt.plot(x)或plt.imshow(x)是直接出图像,不需要plt.show()

如果在脚本中使用ion()命令开启了交互模式,没有使用ioff()关闭的话,则图像会一闪而过,并不会常留。要想防止这种情况,需要在plt.show()之前加上ioff()命令。

在阻塞模式下:

打开一个窗口以后必须关掉才能打开下一个新的窗口。这种情况下,默认是不能像Matlab一样同时开很多窗口进行对比的。

plt.plot(x)或plt.imshow(x)是直接出图像,需要plt.show()后才能显示图像

示例

下面这个例子讲的是如何像matlab一样同时打开多个窗口显示图片或线条进行比较,同时也是在脚本中开启交互模式后图像一闪而过的解决办法:


 import matplotlib.pyplot as plt
 plt.ion()  # 打开交互模式
 # 同时打开两个窗口显示图片
 plt.figure()
 plt.imshow(i1)
 plt.figure()
 plt.imshow(i2)
 # 显示前关掉交互模式
 plt.ioff()
 plt.show()

补充知识:matplotlib.pyplot的两种模式

在交互模式下:

1、plt.plot(x)或plt.imshow(x)是直接出图像,不需要plt.show()

2、如果在脚本中使用ion()命令开启了交互模式,没有使用ioff()关闭的话,则图像会一闪而过,并不会常留。要想防止这种情况,需要在plt.show()之前加上ioff()命令。

在阻塞模式下:

1、打开一个窗口以后必须关掉才能打开下一个新的窗口。这种情况下,默认是不能像Matlab一样同时开很多窗口进行对比的。

2、plt.plot(x)或plt.imshow(x)是直接出图像,需要plt.show()后才能显示图像。

示例代码


with tf.Session() as sess:
 sess.run(init)

fig = plt.figure()
 ax = fig.add_subplot(1,1,1)
 ax.scatter(x_data,y_data)
 plt.ion()  #将画图模式改为交互模式

for i in range(1000):
   sess.run(train_step,feed_dict={xs:x_data,ys:y_data})
   if i%50 ==0:
     plt.pause(0.1)
     try:
       ax.lines.remove(lines[0])
     except Exception:
       pass
     prediction_value = sess.run(prediction,feed_dict={xs:x_data})
     lines = ax.plot(x_data,prediction_value,'r-',lw=5)

print(sess.run(loss,feed_dict={xs:x_data,ys:y_data}))

plt.ioff()
 plt.show()

来源:https://blog.csdn.net/SZuoDao/article/details/52973621

标签:matplotlib,ion,ioff
0
投稿

猜你喜欢

  • 初识Golang Mutex互斥锁的使用

    2024-05-09 09:39:57
  • CodeIgniter分页类pagination使用方法示例

    2023-11-24 10:33:05
  • python接口,继承,重载运算符详解

    2023-03-08 05:51:38
  • python对绑定事件的鼠标、按键的判断实例

    2021-05-20 03:12:58
  • Python网页正文转换语音文件的操作方法

    2021-03-26 04:27:30
  • 用python画一只帅气的皮卡丘

    2023-08-10 09:18:13
  • pytorch SummaryWriter保存日志的方法

    2023-07-24 22:07:31
  • nodejs基础知识

    2024-05-13 09:30:32
  • Python的数据类型与标识符和判断语句详解

    2021-04-11 13:18:15
  • 用FSO操作 xml

    2008-09-03 12:26:00
  • MySQL日期数据类型、时间类型使用总结

    2024-01-27 09:46:51
  • SQLServer2005重建索引前后对比分析

    2024-01-27 17:27:09
  • 详解用Python处理HTML转义字符的5种方式

    2021-01-27 20:53:17
  • 详解LyScript 内存扫描与查壳实现

    2022-04-18 07:07:31
  • 获取python的list中含有重复值的index方法

    2022-03-06 20:54:02
  • jQuery打造动态下滑菜单

    2010-04-20 14:50:00
  • MySQL修改root账号密码的方法

    2024-01-28 07:25:46
  • SQL Server 2005恢复数据库详细图文教程

    2024-01-14 10:18:02
  • Python数据分析matplotlib设置多个子图的间距方法

    2021-03-16 01:08:29
  • Python最基本的输入输出详解

    2023-11-27 16:49:24
  • asp之家 网络编程 m.aspxhome.com