我正在尝试使用 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 的事件循环(允许鼠标交互)。
https://stackoverflow.com/questions/11874767/