基于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读写unicode文件的方法
Jul 10 Python
Python网络编程使用select实现socket全双工异步通信功能示例
Apr 09 Python
windows下python安装pip图文教程
May 25 Python
Python Dataframe 指定多列去重、求差集的方法
Jul 10 Python
给我一面国旗 python帮你实现
Sep 30 Python
python机器学习库xgboost的使用
Jan 20 Python
python pprint模块中print()和pprint()两者的区别
Feb 10 Python
解决keras使用cov1D函数的输入问题
Jun 29 Python
Python使用Selenium模拟浏览器自动操作功能
Sep 08 Python
python 实现关联规则算法Apriori的示例
Sep 30 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
Dec 31 Python
pytorch查看网络参数显存占用量等操作
May 12 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
mysql 搜索之简单应用
2007/04/27 PHP
PHP 飞信好友免费短信API接口开源版
2010/07/22 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
2012/07/02 PHP
php在window iis的莫名问题的测试方法
2013/05/14 PHP
PHP类的特性实例分析
2016/09/28 PHP
在IE下:float属性会影响offsetTop的取值
2006/12/22 Javascript
用tip解决Ext列宽度不够的问题
2008/12/13 Javascript
Lazy Load 延迟加载图片的 jQuery 插件
2010/02/06 Javascript
JQuery插件Style定制化方法的分析与比较
2012/05/03 Javascript
JS通过相同的name进行表格求和代码
2013/08/18 Javascript
javascript实现的一个带下拉框功能的文本框
2014/05/08 Javascript
JavaScript获取网页、浏览器、屏幕高度和宽度汇总
2014/12/18 Javascript
js实现拖拽效果
2015/02/12 Javascript
JavaScript实现点击按钮切换网页背景色的方法
2015/10/17 Javascript
关于两个jQuery(js)特效冲突的bug的解决办法
2016/09/04 Javascript
AngularJS通过$sce输出html的方法
2016/09/22 Javascript
JS从非数组对象转数组的方法小结
2018/03/26 Javascript
解决node修改后需频繁手动重启的问题
2018/05/13 Javascript
Vue cli构建及项目打包以及出现的问题解决
2018/08/27 Javascript
Vue实现渲染数据后控制滚动条位置(推荐)
2019/12/09 Javascript
介绍Python中几个常用的类方法
2015/04/08 Python
机器学习经典算法-logistic回归代码详解
2017/12/22 Python
Python模拟简单电梯调度算法示例
2018/08/20 Python
手把手教你Python yLab的绘制折线图的画法
2019/10/23 Python
详解HTML5中垂直上下居中的解决方案
2017/12/20 HTML / CSS
Zavvi美国:英国娱乐之家
2017/03/19 全球购物
英国领先的高级美容和在线皮肤诊所:Face the Future
2020/06/17 全球购物
模具专业毕业生自荐书范文
2014/02/19 职场文书
会计电算化专业自荐信
2014/03/15 职场文书
中学生评语大全
2014/04/18 职场文书
安全教育演讲稿
2014/05/09 职场文书
公司党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2014年法院工作总结
2014/11/24 职场文书
投标售后服务承诺书
2015/04/29 职场文书
2016大学生社会实践心得体会范文
2016/01/14 职场文书
Python学习之时间包使用教程详解
2022/03/21 Python