基于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中编写并发程序
Feb 27 Python
Python编程产生非均匀随机数的几种方法代码分享
Dec 13 Python
Python中字典的浅拷贝与深拷贝用法实例分析
Jan 02 Python
Python元字符的用法实例解析
Jan 17 Python
基于python 二维数组及画图的实例详解
Apr 03 Python
Python2实现的图片文本识别功能详解
Jul 11 Python
8段用于数据清洗Python代码(小结)
Oct 31 Python
django 中使用DateTime常用的时间查询方式
Dec 03 Python
Python matplotlib修改默认字体的操作
Mar 05 Python
浅谈keras2 predict和fit_generator的坑
Jun 17 Python
Django模型验证器介绍与源码分析
Sep 08 Python
Jupyter Notebook 安装配置与使用详解
Jan 06 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内核之php in array
2015/11/10 PHP
php使用pear_smtp发送邮件
2016/04/15 PHP
PHP实时统计中文字数和区别
2019/02/28 PHP
PHP7 标准库修改
2021/03/09 PHP
基于jquery的一个OutlookBar类,动态创建导航条
2010/11/19 Javascript
js 剪切板的用法(clipboardData.setData)与js match函数介绍
2013/11/19 Javascript
经过绑定元素时会多次触发mouseover和mouseout事件
2014/02/28 Javascript
js操作模态窗口及父子窗口间相互传值示例
2014/06/09 Javascript
JS+CSS实现的简单折叠展开多级菜单效果
2015/09/12 Javascript
内容滑动切换效果jquery.hwSlide.js插件封装
2016/07/07 Javascript
老生常谈javascript中逻辑运算符&&和||的返回值问题
2017/04/13 Javascript
nodejs批量下载图片的实现方法
2017/05/19 NodeJs
用js屏蔽被http劫持的浮动广告实现方法
2017/08/10 Javascript
如何制作一个Node命令行图像识别工具
2018/12/12 Javascript
AngularJS实现的自定义过滤器简单示例
2019/02/02 Javascript
vue.js实现简单购物车功能
2020/05/30 Javascript
[02:28]DOTA2 2015国际邀请赛中国区预选赛首日现场百态
2015/05/26 DOTA
[27:08]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第二场 11.21
2020/11/23 DOTA
调试Python程序代码的几种方法总结
2015/04/28 Python
python实现读取excel写入mysql的小工具详解
2017/11/20 Python
python实现Adapter模式实例代码
2018/02/09 Python
Pipenv一键搭建python虚拟环境的方法
2018/05/22 Python
Python实现调用另一个路径下py文件中的函数方法总结
2018/06/07 Python
python 用下标截取字符串的实例
2018/12/25 Python
Python中Subprocess的不同函数解析
2019/12/10 Python
解决pycharm debug时界面下方不出现step等按钮及变量值的问题
2020/06/09 Python
Html5自定义字体解决方法
2019/10/09 HTML / CSS
英国最大的在线运动补充剂商店:Discount Supplements
2017/06/03 全球购物
《秋姑娘的信》教学反思
2014/02/28 职场文书
美化环境标语
2014/06/20 职场文书
尊老爱幼演讲稿
2014/09/04 职场文书
师德自我剖析材料范文
2014/10/06 职场文书
婚礼父母答谢词
2015/01/04 职场文书
小浪底导游词
2015/02/12 职场文书
集团财务总监岗位职责
2015/04/03 职场文书
Mysql中的触发器定义及语法介绍
2022/06/25 MySQL