基于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异步回调机制实现和使用方法
Nov 26 Python
在Python下使用Txt2Html实现网页过滤代理的教程
Apr 11 Python
python多进程共享变量
Apr 06 Python
python pandas写入excel文件的方法示例
Jun 25 Python
详解python websocket获取实时数据的几种常见链接方式
Jul 01 Python
Python中的上下文管理器相关知识详解
Sep 19 Python
Python 日志logging模块用法简单示例
Oct 18 Python
python网络编程socket实现服务端、客户端操作详解
Mar 24 Python
python实现梯度下降和逻辑回归
Mar 24 Python
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
Jun 11 Python
详解Go语言运用广度优先搜索走迷宫
Jun 23 Python
Django模型层实现多表关系创建和多表操作
Jul 21 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
phpmyadmin操作流程
2006/10/09 PHP
php5新改动之短标记启用方法
2008/09/11 PHP
php中ob_flush函数和flush函数用法分析
2015/03/18 PHP
YII2框架中actions的作用与使用方法示例
2020/03/13 PHP
Javascript 布尔型分析
2008/12/22 Javascript
JS判断对象是否存在的10种方法总结
2013/12/23 Javascript
jquery插件开发之实现google+圈子选择功能
2014/03/10 Javascript
Jquery树插件zTree用法入门教程
2015/02/17 Javascript
jQuery对JSON数据进行排序输出的方法
2015/06/24 Javascript
浅谈JavaScript for循环 闭包
2016/06/22 Javascript
Vue数组更新及过滤排序功能
2017/08/10 Javascript
微信小程序页面间传值与页面取值操作实例分析
2019/04/30 Javascript
webpack + vue 打包生成公共配置文件(域名) 方便动态修改
2019/08/29 Javascript
js实现微信聊天效果
2020/08/09 Javascript
vue 项目软键盘回车触发搜索事件
2020/09/09 Javascript
express异步函数异常捕获示例详解
2020/11/30 Javascript
Python使用matplotlib填充图形指定区域代码示例
2018/01/16 Python
如何分离django中的媒体、静态文件和网页
2019/11/12 Python
Python xlrd excel文件操作代码实例
2020/03/10 Python
python利用faker库批量生成测试数据
2020/10/15 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
2021/02/03 Python
pytorch 实现L2和L1正则化regularization的操作
2021/03/03 Python
Amaze UI 文件选择域的示例代码
2020/08/26 HTML / CSS
美国祛痘、抗衰老药妆品牌:Murad
2016/08/27 全球购物
澳大利亚厨房和家用电器购物网站:Bing Lee
2021/01/11 全球购物
初一英语教学反思
2014/01/11 职场文书
临时租车协议范本
2014/09/23 职场文书
环卫工作汇报材料
2014/10/28 职场文书
小学教师2014年度工作总结
2014/12/03 职场文书
初中优秀学生评语
2014/12/29 职场文书
地球上的星星观后感
2015/06/02 职场文书
暂住证证明
2015/06/19 职场文书
开学随笔
2015/08/15 职场文书
2016年教师节贺卡寄语
2015/12/04 职场文书
2016国庆节67周年寄语
2015/12/07 职场文书
小公司融资,商业计划书的8切记
2019/07/15 职场文书