基于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中with及contextlib的用法详解
Jun 08 Python
pandas中Timestamp类用法详解
Dec 11 Python
python3处理含有中文的url方法
May 10 Python
Python脚本按照当前日期创建多级目录
Mar 01 Python
利用Python查看微信共同好友功能的实现代码
Apr 24 Python
python3 深浅copy对比详解
Aug 12 Python
使用Python的turtle模块画国旗
Sep 24 Python
关于numpy数组轴的使用详解
Dec 05 Python
python logging添加filter教程
Dec 24 Python
python——全排列数的生成方式
Feb 26 Python
Python基础详解之描述符
Apr 28 Python
python字符串常规操作大全
May 02 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写的简易聊天室代码
2011/06/04 PHP
php实现rc4加密算法代码
2012/04/25 PHP
关于crontab的使用详解
2013/06/24 PHP
PHP基本语法总结
2014/09/06 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
浅谈laravel框架sql中groupBy之后排序的问题
2019/10/17 PHP
Js+Dhtml:WEB程序员简易开发工具包(预先体验版)
2006/11/07 Javascript
JavaScript的document对象和window对象详解
2010/12/30 Javascript
js实现连个数字相加而不是拼接的方法
2014/02/23 Javascript
原生js实现类似弹窗抖动效果
2015/04/02 Javascript
详解基于Bootstrap+angular的一个豆瓣电影app
2017/06/26 Javascript
详解在Angular项目中添加插件ng-bootstrap
2017/07/04 Javascript
总结javascript三元运算符知识点
2018/09/28 Javascript
JavaScript交换两个变量方法实例
2019/11/25 Javascript
微信浏览器下拉黑边解决方案 wScroollFix
2020/01/21 Javascript
jquery添加div实现消息聊天框
2020/02/08 jQuery
详解ES6实现类的私有变量的几种写法
2021/02/10 Javascript
[02:06]DOTA2英雄基础教程 暗影萨满
2013/12/16 DOTA
[07:09]2014DOTA2国际邀请赛-Newbee再次发威成功晋级决赛
2014/07/19 DOTA
Python中让MySQL查询结果返回字典类型的方法
2014/08/22 Python
Python实现调用另一个路径下py文件中的函数方法总结
2018/06/07 Python
详解python中的hashlib模块的使用
2019/04/22 Python
Python3中_(下划线)和__(双下划线)的用途和区别
2019/04/26 Python
Python Django基础二之URL路由系统
2019/07/18 Python
Python捕获异常堆栈信息的几种方法(小结)
2020/05/18 Python
Django如何继承AbstractUser扩展字段
2020/11/27 Python
pycharm 使用tab跳出正在编辑的括号(){}{}等问题
2021/02/26 Python
HTML5中drawImage用法分析
2014/12/01 HTML / CSS
美国健康和保健平台:healtop
2020/07/02 全球购物
百度软件工程师职位
2013/02/14 面试题
电气工程和自动化自荐信范文
2013/12/25 职场文书
文明家庭先进事迹材
2014/01/27 职场文书
幼儿园标语大全
2014/06/19 职场文书
大学毕业生个人自荐书
2014/07/02 职场文书
2014年团支部年度工作总结
2014/12/24 职场文书
二审代理词范文
2015/05/25 职场文书