基于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使用MYSQLDB实现从数据库中导出XML文件的方法
May 11 Python
python字典基本操作实例分析
Jul 11 Python
详解supervisor使用教程
Nov 21 Python
学习Python3 Dlib19.7进行人脸面部识别
Jan 24 Python
python使用zip将list转为json的方法
Dec 31 Python
详解Django中CBV(Class Base Views)模型源码分析
Feb 25 Python
python使用thrift教程的方法示例
Mar 21 Python
使用Flask-Cache缓存实现给Flask提速的方法详解
Jun 11 Python
django-crontab实现服务端的定时任务的示例代码
Feb 17 Python
Python3标准库glob文件名模式匹配的问题
Mar 13 Python
PyTorch: Softmax多分类实战操作
Jul 07 Python
基于Python正确读取资源文件
Sep 14 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 curl_setopt 函数的相关应用及介绍
2013/06/17 PHP
老生常谈PHP面向对象之解释器模式
2017/05/17 PHP
php远程请求CURL实例教程(爬虫、保存登录状态)
2020/12/10 PHP
Javascript 判断Flash是否加载完成的代码
2010/04/12 Javascript
js 调用百度地图api并在地图上进行打点添加标注
2014/05/13 Javascript
JavaScript简介
2015/02/15 Javascript
JS实现简单的键盘打字的效果
2015/04/24 Javascript
js实现卡片式项目管理界面UI设计效果
2015/12/08 Javascript
Javascript中this绑定的3种方法与比较
2016/10/13 Javascript
JavaScript中各数制转换全面总结
2017/08/21 Javascript
基于Vue中点击组件外关闭组件的实现方法
2018/03/06 Javascript
详解webpack4多入口、多页面项目构建案例
2018/05/25 Javascript
对vux点击事件的优化详解
2018/08/28 Javascript
微信小程序整合使用富文本编辑器的方法详解
2019/04/25 Javascript
Layui实现带查询条件的分页
2019/07/27 Javascript
vue项目中极验验证的使用代码示例
2019/12/03 Javascript
深入浅析JavaScript中的in关键字和for-in循环
2020/04/20 Javascript
深入分析jQuery.one() 函数
2020/06/03 jQuery
js实现表格单列按字母排序
2020/08/12 Javascript
[44:51]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第二场
2018/04/05 DOTA
Python的Django中django-userena组件的简单使用教程
2015/05/30 Python
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
2016/06/13 Python
Python实现一个转存纯真IP数据库的脚本分享
2017/05/21 Python
python2.7实现FTP文件下载功能
2018/04/15 Python
Python中关键字global和nonlocal的区别详解
2018/09/03 Python
python内置函数sorted()用法深入分析
2019/10/08 Python
Python如何实现小程序 无限求和平均
2020/02/18 Python
利用 PyCharm 实现本地代码和远端的实时同步功能
2020/03/23 Python
什么是python的列表推导式
2020/05/26 Python
神话般的珠宝:Ross-Simons
2020/07/13 全球购物
犯错检讨书
2014/02/21 职场文书
小学生评语集锦
2014/04/18 职场文书
2014年优秀党员材料
2014/12/18 职场文书
商务宴请邀请函范文
2015/02/02 职场文书
会计主管竞聘书
2015/09/15 职场文书
oracle通过存储过程上传list保存功能
2021/05/12 Oracle