基于matplotlib中ion()和ioff()的使用详解

 更新时间:2020年06月16日 09:37:27   作者:一只小Kevin  
这篇文章主要介绍了基于matplotlib中ion()和ioff()的使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

介绍

在使用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的pytest框架之命令行参数详解(上)

    python的pytest框架之命令行参数详解(上)

    这篇文章主要介绍了python的pytest框架之命令行参数详解,pytest是一款强大的python自动化测试工具,可以胜任各种类型或者级别的软件测试工作。pytest提供了丰富的功能,包括assert重写,第三方插件,需要的朋友可以参考下
    2019-06-06
  • python设计tcp数据包协议类的例子

    python设计tcp数据包协议类的例子

    今天小编就为大家分享一篇python设计tcp数据包协议类的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • python遍历一个目录,输出所有的文件名的实例

    python遍历一个目录,输出所有的文件名的实例

    下面小编就为大家分享一篇python遍历一个目录,输出所有的文件名的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • python实现QQ空间自动点赞功能

    python实现QQ空间自动点赞功能

    这篇文章主要为大家详细介绍了python实现QQ空间自动点赞功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • Python使用pydub库对mp3与wav格式进行互转的方法

    Python使用pydub库对mp3与wav格式进行互转的方法

    今天小编就为大家分享一篇Python使用pydub库对mp3与wav格式进行互转的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • python神经网络pytorch中BN运算操作自实现

    python神经网络pytorch中BN运算操作自实现

    这篇文章主要为大家介绍了python神经网络pytorch中BN运算操作自实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • 在双python下设置python3为默认的方法

    在双python下设置python3为默认的方法

    这篇文章主要介绍了如何在双python下设置python3为默认,本文通过一个例子分步骤给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-10-10
  • Tensorflow加载与预处理数据详解实现方法

    Tensorflow加载与预处理数据详解实现方法

    读取大型数据集并对其进行有效预处理可能对其他深度学习库来说很难实现,但是TensorFlow借助Data API很容易实现:只需创建一个数据集对象,并告诉它如何从何处获取数据以及如何对其进行转换
    2022-11-11
  • Python中super函数的用法

    Python中super函数的用法

    这篇文章主要介绍了Python中super函数的用法,详细的介绍了Python super函数的具体用法和实例,具有一定的参考价值,有兴趣的可以了解一下
    2017-11-11
  • python 如何快速找出两个电子表中数据的差异

    python 如何快速找出两个电子表中数据的差异

    下面小编就为大家带来一篇python 如何快速找出两个电子表中数据的差异。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05

最新评论