基于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中用max()方法求最大值的介绍
May 15 Python
python生成式的send()方法(详解)
May 08 Python
django 将model转换为字典的方法示例
Oct 16 Python
Python产生Gnuplot绘图数据的方法
Nov 09 Python
Python 实例方法、类方法、静态方法的区别与作用
Aug 14 Python
python并发爬虫实用工具tomorrow实用解析
Sep 25 Python
在Django下创建项目以及设置settings.py教程
Dec 03 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
Feb 25 Python
python+adb命令实现自动刷视频脚本案例
Apr 23 Python
Python正则re模块使用步骤及原理解析
Aug 18 Python
关于python中remove的一些坑小结
Jan 04 Python
使用python+pygame开发消消乐游戏附完整源码
Jun 10 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下几种删除目录的方法总结
2007/08/19 PHP
php递归函数中使用return的注意事项
2014/01/17 PHP
typecho插件编写教程(二):写一个新插件
2015/05/28 PHP
Symfony2联合查询实现方法
2016/03/18 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
2016/07/28 PHP
使用正则去除php代码中的注释方法
2016/11/03 PHP
iis 7下安装laravel 5.4环境的方法教程
2017/06/14 PHP
php简单实现单态设计模式的方法分析
2017/07/28 PHP
PHP实现的简单sha1加密功能示例
2017/08/27 PHP
基于jquery的Repeater实现代码
2010/07/17 Javascript
基于jquery实现状态限定编辑的代码
2012/02/11 Javascript
js中replace的用法总结
2013/12/27 Javascript
JavaScript高级教程5.6之基本包装类型(详细)
2015/11/23 Javascript
JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
2016/02/26 Javascript
js两种拼接字符串的简单方法(必看)
2016/09/02 Javascript
Javascript中类式继承和原型式继承的实现方法和区别之处
2017/04/25 Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
2017/07/17 Javascript
VUE+Element UI实现简单的表格行内编辑效果的示例的代码
2018/10/31 Javascript
vue2.x 通过后端接口代理,获取qq音乐api的数据示例
2019/10/30 Javascript
6种JavaScript继承方式及优缺点(小结)
2020/02/06 Javascript
python 字符串格式化代码
2013/03/17 Python
Python获取单个程序CPU使用情况趋势图
2015/03/10 Python
使用Python下的XSLT API进行web开发的简单教程
2015/04/15 Python
Python匹配中文的正则表达式
2016/05/11 Python
Python字符串拼接的几种方法整理
2017/08/02 Python
python日期时间转为字符串或者格式化输出的实例
2018/05/29 Python
如何在sublime编辑器中安装python
2020/05/20 Python
诺心蛋糕官网:LE CAKE
2018/08/25 全球购物
美国最佳在线航班预订网站:LookupFare
2019/03/26 全球购物
2014年幼儿园元旦活动方案
2014/02/13 职场文书
2014年大学生四年规划书范文
2014/04/03 职场文书
销售员工作检讨书(推荐篇)
2014/10/18 职场文书
反腐倡廉主题教育活动总结
2015/05/07 职场文书
驳回起诉民事裁定书
2015/05/19 职场文书
python scipy 稀疏矩阵的使用说明
2021/05/26 Python
SQL基础的查询语句
2021/11/11 MySQL