基于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设置windows桌面壁纸的实现代码
Jan 28 Python
Python的时间模块datetime详解
Apr 17 Python
Python之用户输入的实例
Jun 22 Python
Python实现的微信红包提醒功能示例
Aug 22 Python
python实现计算器功能
Oct 31 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
Sep 22 Python
如何在django中实现分页功能
Apr 22 Python
python 代码运行时间获取方式详解
Sep 18 Python
python小技巧——将变量保存在本地及读取
Nov 13 Python
python中strip(),lstrip(),rstrip()函数的使用讲解
Nov 17 Python
Python常用GUI框架原理解析汇总
Dec 07 Python
Python如何利用正则表达式爬取网页信息及图片
Apr 17 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取整函数:ceil,floor,round,intval的区别详细解析
2013/08/31 PHP
PHP zip扩展Linux下安装过程分享
2014/05/05 PHP
thinkphp缓存技术详解
2014/12/09 PHP
php快速排序原理与实现方法分析
2016/05/26 PHP
Laravel中前端js上传图片到七牛云的示例代码
2017/09/04 PHP
使用PHP+MySql实现微信投票功能实例代码
2017/09/29 PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
2018/05/21 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
2019/08/27 PHP
ExtJS 2.0 GridPanel基本表格简明教程
2010/05/25 Javascript
高性能WEB开发 flush让页面分块,逐步呈现 flush让页面分块,逐步呈现
2010/06/19 Javascript
关于js中alert弹出窗口文本换行问题简单详细说明
2012/12/11 Javascript
js将iframe中控件的值传到主页面控件中的实现方法
2013/03/11 Javascript
解决jquery操作checkbox火狐下第二次无法勾选问题
2014/02/10 Javascript
Flexigrid在IE下不显示数据的有效处理方法
2014/09/04 Javascript
JS截取字符串实例详解
2015/11/24 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
js判断请求的url是否可访问,支持跨域判断的实现方法
2016/09/17 Javascript
JS数字千分位格式化实现方法总结
2016/12/16 Javascript
angular2路由切换改变页面title的示例代码
2017/08/23 Javascript
vue.js 2.0实现简单分页效果
2019/07/29 Javascript
微信小程序常用的3种提示弹窗实现详解
2019/09/19 Javascript
layui数据表格重载实现往后台传参
2019/11/15 Javascript
Auto.JS实现抖音刷宝等刷视频app,自动点赞,自动滑屏,自动切换视频功能
2020/05/08 Javascript
将Python中的数据存储到系统本地的简单方法
2015/04/11 Python
Python爬虫框架Scrapy实战之批量抓取招聘信息
2015/08/07 Python
Python基础教程之异常详解
2019/01/10 Python
Python 从subprocess运行的子进程中实时获取输出的例子
2019/08/14 Python
浅谈Django+Gunicorn+Nginx部署之路
2019/09/11 Python
Django框架HttpResponse对象用法实例分析
2019/11/01 Python
简单整理HTML5的基本特性和语法
2016/02/18 HTML / CSS
Bandier官网:奢侈、时尚前卫的健身服装首选目的地
2020/07/05 全球购物
先进事迹报告会感言
2014/01/24 职场文书
办理房产证委托书
2014/09/18 职场文书
优秀班主任申报材料
2014/12/16 职场文书
捐助倡议书
2015/01/19 职场文书
如何利用python实现Simhash算法
2022/06/28 Python