基于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使用str & repr转换字符串
Oct 13 Python
Python实现简单的获取图片爬虫功能示例
Jul 12 Python
查看Django和flask版本的方法
May 14 Python
python生成密码字典的方法
Jul 06 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
Aug 30 Python
使用python opencv对目录下图片进行去重的方法
Jan 12 Python
VSCode Python开发环境配置的详细步骤
Feb 22 Python
Python文件打开方式实例详解【a、a+、r+、w+区别】
Mar 30 Python
python 实现创建文件夹和创建日志文件的方法
Jul 07 Python
python装饰器练习题及答案
Nov 01 Python
mac在matplotlib中显示中文的操作方法
Mar 06 Python
Python scrapy爬取起点中文网小说榜单
Jun 13 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
支持oicq头像的留言簿(一)
2006/10/09 PHP
codeigniter教程之多文件上传使用示例
2014/02/11 PHP
php数组合并的二种方法
2014/03/21 PHP
PHP实现服务器状态监控的方法
2014/12/09 PHP
Linux平台php命令行程序处理管道数据的方法
2016/11/10 PHP
Prototype源码浅析 Enumerable部分(二)
2012/01/18 Javascript
JQuery选择器绑定事件及修改内容的方法
2015/01/23 Javascript
深入理解JavaScript的React框架的原理
2015/07/02 Javascript
浅析js绑定事件的常用方法
2016/05/15 Javascript
同步文本框内容JS代码实现
2016/08/04 Javascript
JavaScript常用代码书写规范的超全面总结
2016/09/11 Javascript
Bootstrap源码解读按钮(5)
2016/12/23 Javascript
EasyUI学习之Combobox级联下拉列表(2)
2016/12/29 Javascript
nodejs个人博客开发第一步 准备工作
2017/04/12 NodeJs
前端页面文件拖拽上传模块js代码示例
2017/05/19 Javascript
jquery鼠标悬停导航下划线滑出效果
2017/09/29 jQuery
vue中$refs的用法及作用详解
2018/04/24 Javascript
使用RxJS更优雅地进行定时请求详析
2019/06/02 Javascript
详解Vue3.0 前的 TypeScript 最佳入门实践
2019/06/18 Javascript
详解vuex的简单todolist例子
2019/07/14 Javascript
Vue如何使用混合Mixins和插件开发详解
2020/02/05 Javascript
python中MySQLdb模块用法实例
2014/11/10 Python
Python实现数据库编程方法详解
2015/06/09 Python
python: line=f.readlines()消除line中\n的方法
2018/03/19 Python
numpy中的高维数组转置实例
2018/04/17 Python
Python使用sax模块解析XML文件示例
2019/04/04 Python
python nmap实现端口扫描器教程
2020/05/28 Python
简单了解Pandas缺失值处理方法
2019/11/16 Python
毕业生教师求职信
2013/10/20 职场文书
运动会广播稿200米
2014/01/27 职场文书
电台实习生求职信
2014/02/25 职场文书
法制宣传标语集锦
2014/06/25 职场文书
2014年项目经理工作总结
2014/11/24 职场文书
求职简历自我评价怎么写
2015/03/10 职场文书
Python实现简单的俄罗斯方块游戏
2021/09/25 Python
vue递归实现树形组件
2022/07/15 Vue.js