我正在尝试使用 OpenCV 实时绘制来自相机的一些数据。但是,实时绘图(使用 matplotlib)似乎不起作用。

我已经将问题隔离到这个简单的例子中:

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 个点。实际发生的是,窗口弹出并显示第一个点(确定),然后在填充图形的其余部分之前等待循环完成。

有什么想法为什么我没有看到一次填充一个点?

最佳答案

这是相关代码的工作版本(至少需要 2011-11-14 的 Matplotlib 1.1.0 版本):

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) 的调用,它既绘制新数据又运行 GUI 的事件循环(允许鼠标交互)。

关于python - 如何使用 matplotlib 在 while 循环中实时绘图?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11874767/

10-14 06:07