我正在尝试使用 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/