首页 > 后端开发 > Python教程 > 为什么我的 Matplotlib 实时绘图不在 While 循环内更新?

为什么我的 Matplotlib 实时绘图不在 While 循环内更新?

DDD
发布: 2024-12-04 19:23:15
原创
301 人浏览过

Why Doesn't My Matplotlib Real-Time Plot Update Inside a While Loop?

While 循环中的实时绘图:故障排除指南

尝试创建实时绘图时,必须了解原因在 while 循环期间,绘图更新可能不会按预期发生。在此特定实例中,使用 matplotlib 实现实时绘图以可视化从 OpenCV 中的相机检索的数据时出现问题。

为了隔离该问题,提供了一个简化的示例代码:

fig = plt.figure()
plt.axis([0, 1000, 0, 1])

i = 0
x = list()
y = list()

while i < 1000:
    temp_y = np.random.random()
    x.append(i)
    y.append(temp_y)
    plt.scatter(i, temp_y)
    i += 1
    plt.show()
登录后复制

期望看到单独绘制的 1000 个点,令人惊讶的是,代码只显示第一个点,然后等待循环完成,然后再填充图表的其余部分。出现这种情况是因为 matplotlib 的默认行为是等到程序结束时绘制整个图形。

要克服此限制并实现实时绘图,应将代码片段修改如下:

import numpy as np
import matplotlib.pyplot as plt

plt.axis([0, 10, 0, 1])

for i in range(10):
    y = np.random.random()
    plt.scatter(i, y)
    plt.pause(0.05)

plt.show()
登录后复制

这里的主要区别是包含 plt.pause(0.05)。此函数将程序的执行暂停 0.05 秒,允许绘制数据点并运行 GUI 的事件循环(使鼠标交互成为可能)。

通过此修改,绘图将在实时显示添加到数据集中的每个点。

以上是为什么我的 Matplotlib 实时绘图不在 While 循环内更新?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板