Python-如何使用matplotlib在while循环中实时绘制?
我正在尝试使用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 npimport 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循环中实时绘制? 的全部内容, 来源链接: utcz.com/qa/426914.html