介绍 在使用matplotlib的过程中,发现不能像matlab一样同时开几个窗口进行比较,于是查询得知了交互模式,但是放在脚本里运行的适合却总是一闪而过,图像并不停留,遂仔细阅读和理解了一下文档,记下解决办法,问题比较简单,仅供菜鸟参考。 python可视化库matplotlib有两种显示模式: 阻塞(block)模式 交互(interactive)模式 在Python Consol命令行中,默认是交互模式。而在python脚本中,matplotlib默认是阻塞模式。 其中的区别是: 在交互模式下: plt.plot(x)或plt.imshow(x)是直接出图像,不需要plt.show() 在Python的科学计算和数据可视化领域,matplotlib是一个不可或缺的库,它提供了丰富的图形绘制功能,类似于MATLAB。本文主要探讨了在matplotlib中如何利用`ion()`和`ioff()`函数来控制交互模式,以便实现类似MATLAB的多窗口比较功能。 在matplotlib中,有两种主要的显示模式:阻塞模式(block mode)和交互模式(interactive mode)。在Python Console或IPython环境中,默认使用的是交互模式。而在独立的Python脚本中,matplotlib默认启动的是阻塞模式。 1. **交互模式(Interactive Mode)**: - 在交互模式下,调用`plt.plot(x)`或`plt.imshow(x)`等函数会立即显示图像,无需调用`plt.show()`。这使得用户可以实时查看和调整图像。 - 如果在脚本中使用`plt.ion()`启动交互模式,但未使用`plt.ioff()`关闭,那么在执行`plt.show()`之前,生成的图像会快速闪过,不会停留在屏幕上。为避免这种情况,应在调用`plt.show()`之前使用`plt.ioff()`关闭交互模式。 2. **阻塞模式(Block Mode)**: - 阻塞模式下,每个窗口打开后必须关闭,才能打开新的窗口,无法像MATLAB那样同时展示多个窗口进行比较。 - 在这种模式中,`plt.plot(x)`或`plt.imshow(x)`不会立即显示图像,需要通过`plt.show()`指令来呈现图形。 示例代码展示了如何在脚本中使用`ion()`和`ioff()`在交互模式下打开多个窗口并进行比较: ```python import matplotlib.pyplot as plt plt.ion() # 开启交互模式 plt.figure() plt.imshow(i1) plt.figure() plt.imshow(i2) plt.ioff() # 关闭交互模式 plt.show() ``` 在上述代码中,我们首先调用`plt.ion()`开启交互模式,然后创建两个窗口分别显示`i1`和`i2`的图像。接着,使用`plt.ioff()`关闭交互模式,确保在`plt.show()`执行后,图像会保持显示。 此外,还提供了一个示例,演示如何在训练神经网络的过程中,利用交互模式实时更新图形: ```python 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() ``` 在这个示例中,我们使用TensorFlow进行神经网络训练,并在每个训练间隔调用`plt.pause()`暂停程序,更新预测值的图形。当训练结束时,通过`plt.ioff()`关闭交互模式,最后使用`plt.show()`显示最终结果。 `ion()`和`ioff()`是matplotlib中控制交互模式的关键函数,它们允许用户在脚本中灵活地切换显示模式,以适应不同的需求,如实时更新图形、多窗口比较等。理解这些概念对于提升matplotlib的使用效率和用户体验至关重要。






















- 粉丝: 5
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 微电网逆变器下垂控制及孤岛模式下波形完美输出的技术解析
- 电机控制领域中模糊PID对PMSM仿真的优化及应用
- 该项目是一个多平台热点数据聚合服务,能自动从 24 个主流平台(如微博、抖音、哔哩哔哩等)爬取热点信息
- IEEE33节点参数及拓扑图,可以用于期刊写作
- CentOS系统下Linux磁盘扩容操作指南
- TICSPro-1.7.9.1-20-Jun-2025.exe
- 基于深度强化学习的混合动力汽车能量管理策略:利用DQNDDPGTD3优化功率分配与能耗
- 多目标优化领域中MOCOA与MOTROA算法的性能对比及其与经典算法的整合 核心版
- 基于FLOW3D的SLM增材制造数值模拟:EDEM与Gambit建模及多物理场仿真 - FLOW3D
- 岩土工程中FLAC3D桩梁单元的弯矩、轴力、剪力云图及包络线分析
- Java Canvas组件实现绘图功能的完整代码
- 基于Matlab的智能算法PID参数整定软件:灰狼、粒子群、麻雀算法优化,清晰呈现传递函数与参数表,适合新手一键操作
- 光伏交直流混合微电网双下垂控制离网模式Matlab仿真模型研究
- 光伏交直流混合微电网双下垂控制离网模式Matlab仿真模型研究 · Matlab仿真
- 风电领域基于天牛须算法优化的模糊PID风机变桨距控制系统研究与应用 · 风力发电
- 基于ANSYS Maxwell与Workbench的永磁直线电机多目标尺寸优化研究



评论0