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


Posted in Python onJune 16, 2020

介绍

在使用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()

以上这篇基于matplotlib中ion()和ioff()的使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Mac OS系统上安装Python的Pillow库的教程
Nov 20 Python
opencv改变imshow窗口大小,窗口位置的方法
Apr 02 Python
python pcm音频添加头转成Wav格式文件的方法
Jan 09 Python
详解Python函数式编程—高阶函数
Mar 29 Python
python实现批量修改服务器密码的方法
Aug 13 Python
对python while循环和双重循环的实例详解
Aug 23 Python
django中的图片验证码功能
Sep 18 Python
python实现简易学生信息管理系统
Apr 05 Python
python实现局域网内实时通信代码
Dec 22 Python
如何给Python代码进行加密
Jan 10 Python
Python内置函数locals和globals对比
Apr 28 Python
Python 实现PS滤镜中的径向模糊特效
Dec 03 Python
Python数据相关系数矩阵和热力图轻松实现教程
Jun 16 #Python
matplotlib.pyplot.matshow 矩阵可视化实例
Jun 16 #Python
使用python matploblib库绘制准确率,损失率折线图
Jun 16 #Python
为什么称python为胶水语言
Jun 16 #Python
在Keras中利用np.random.shuffle()打乱数据集实例
Jun 15 #Python
Python Socket TCP双端聊天功能实现过程详解
Jun 15 #Python
Python实现验证码识别
Jun 15 #Python
You might like
PHP错误Cannot use object of type stdClass as array in错误的解决办法
2014/06/12 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
2014/06/26 PHP
php生成图片验证码的方法
2016/04/15 PHP
微信开发之获取JSAPI TICKET
2017/07/07 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
解决FireFox下[使用event很麻烦]的问题
2006/11/26 Javascript
找到了一篇jQuery与Prototype并存的冲突的解决方法
2007/08/29 Javascript
解析jquery中的ajax缓存问题
2013/12/19 Javascript
60个很实用的jQuery代码开发技巧收集
2014/12/15 Javascript
基于jQuery实现Div窗口震动特效代码-代码简单
2015/08/28 Javascript
js学习阶段总结(必看篇)
2016/06/16 Javascript
AngularJS使用ng-class动态增减class样式的方法示例
2017/05/18 Javascript
Angular X中使用ngrx的方法详解(附源码)
2017/07/10 Javascript
jQuery dateRangePicker插件使用方法详解
2017/07/28 jQuery
AngularJS与后端php的数据交互方法
2018/08/13 Javascript
用Cordova打包Vue项目的方法步骤
2019/02/02 Javascript
vue实现在线预览pdf文件和下载(pdf.js)
2019/11/26 Javascript
JavaScript实现H5接金币功能(实例代码)
2021/02/22 Javascript
Python首次安装后运行报错(0xc000007b)的解决方法
2016/10/18 Python
python代码实现ID3决策树算法
2017/12/20 Python
BP神经网络原理及Python实现代码
2018/12/18 Python
Python3多目标赋值及共享引用注意事项
2019/05/27 Python
python hash每次调用结果不同的原因
2019/11/21 Python
pytorch GAN生成对抗网络实例
2020/01/10 Python
Python Tornado批量上传图片并显示功能
2020/03/26 Python
5行Python代码实现图像分割的步骤详解
2020/05/25 Python
安装pyinstaller遇到的各种问题(小结)
2020/11/20 Python
研究生简历自我评
2015/03/11 职场文书
2015年生活老师工作总结
2015/05/27 职场文书
长征观后感
2015/06/09 职场文书
天河观后感
2015/06/11 职场文书
物业保洁员管理制度
2015/08/05 职场文书
2016年大学生就业指导课心得体会
2015/10/09 职场文书
python中mongodb包操作数据库
2022/04/19 Python
SpringBoot使用ip2region获取地理位置信息的方法
2022/06/21 Java/Android