基于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 相关文章推荐
python模拟enum枚举类型的方法小结
Apr 30 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
Oct 11 Python
djang常用查询SQL语句的使用代码
Feb 15 Python
Python中 CSV格式清洗与转换的实例代码
Aug 29 Python
softmax及python实现过程解析
Sep 30 Python
Anaconda 查看、创建、管理和使用python环境的方法
Dec 03 Python
python 实现性别识别
Nov 21 Python
Python3.8.2安装包及安装教程图文详解(附安装包)
Nov 28 Python
python unichr函数知识点总结
Dec 16 Python
python 如何上传包到pypi
Dec 24 Python
Python Pycharm虚拟下百度飞浆PaddleX安装报错问题及处理方法(亲测100%有效)
May 24 Python
只用Python就可以制作的简单词云
Jun 07 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 date函数参数详解
2006/11/27 PHP
PHP中的按位与和按位或操作示例
2014/01/27 PHP
php中使用base HTTP验证的方法
2015/04/20 PHP
浅谈PHP中静态方法和非静态方法的相互调用
2016/10/04 PHP
thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例
2019/10/10 PHP
laravel 如何实现引入自己的函数或类库
2019/10/15 PHP
Laravel框架实现抢红包功能示例
2019/10/31 PHP
IE8 原生JSON支持
2009/04/13 Javascript
常规表格多表头查询示例
2014/02/21 Javascript
浅析JQuery中的html(),text(),val()区别
2014/09/01 Javascript
详解JavaScript中setSeconds()方法的使用
2015/06/11 Javascript
bootstrap datetimepicker实现秒钟选择下拉框
2017/01/05 Javascript
JS得到当前时间的方法示例
2017/03/24 Javascript
微信小程序switch开关选择器使用详解
2018/01/31 Javascript
详解Angular中实现自定义组件的双向绑定的两种方法
2018/11/23 Javascript
微信小程序实现日期格式化和倒计时
2020/11/01 Javascript
微信小程序仿今日头条导航栏滚动解析
2019/08/20 Javascript
vue-cli和v-charts实现可视化图表过程解析
2019/10/08 Javascript
jQuery 选择方法及$(this)用法实例分析
2020/05/19 jQuery
[14:20]刀塔大凶女神互压各路奇葩屌丝
2014/05/16 DOTA
python实现基于两张图片生成圆角图标效果的方法
2015/03/26 Python
Python字符串切片操作知识详解
2016/03/28 Python
Python selenium 三种等待方式详解(必会)
2016/09/15 Python
Python操作MongoDB数据库的方法示例
2018/01/04 Python
Python 日志logging模块用法简单示例
2019/10/18 Python
CSS3实现跳动的动画效果
2016/09/12 HTML / CSS
简单叙述一下MYSQL的优化
2016/05/09 面试题
本科生求职简历的自我评价
2013/10/21 职场文书
我爱读书演讲稿
2014/05/07 职场文书
企业法人授权委托书范本
2014/09/23 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
2014乡镇机关党员个人对照检查材料思想汇报
2014/10/09 职场文书
孕妇病假条怎么写
2015/08/17 职场文书
《百分数的认识》教学反思
2016/02/19 职场文书
浅谈golang 中time.After释放的问题
2021/05/05 Golang
JS高级程序设计之class继承重点详解
2022/07/07 Javascript