Nab*_*abs 8 python real-time matplotlib
我想创建一个实时图形绘图程序,它从串口输入.最初,我尝试了很多在网站上发布的代码,但都没有.所以,我决定通过集成我在网站上看到的代码片段来自己编写代码.但问题是图形将仅在程序结束时弹出,换句话说,在循环之外.在循环中,它没有显示任何内容,只是一个空白的画布.我仍然是python的新手.这是我的代码.
import matplotlib.pyplot as plt
import time
import random
from collections import deque
import numpy as np
# simulates input from serial port
def random_gen():
while True:
val = random.randint(1,10)
yield val
time.sleep(0.1)
a1 = deque([0]*100)
ax = plt.axes(xlim=(0, 20), ylim=(0, 10))
d = random_gen()
line, = plt.plot(a1)
plt.ion()
plt.ylim([0,10])
plt.show()
for i in range(0,20):
a1.appendleft(next(d))
datatoplot = a1.pop()
line.set_ydata(a1)
plt.draw()
print a1[0]
i += 1
time.sleep(0.1)
Run Code Online (Sandbox Code Playgroud)
另外,我使用Enthought Canopy学术许可证ver 1.1.0.
Dev*_*per 26
这是解决方案plt.pause(0.0001)
在循环中添加如下:
import matplotlib.pyplot as plt
import time
import random
from collections import deque
import numpy as np
# simulates input from serial port
def random_gen():
while True:
val = random.randint(1,10)
yield val
time.sleep(0.1)
a1 = deque([0]*100)
ax = plt.axes(xlim=(0, 20), ylim=(0, 10))
d = random_gen()
line, = plt.plot(a1)
plt.ion()
plt.ylim([0,10])
plt.show()
for i in range(0,20):
a1.appendleft(next(d))
datatoplot = a1.pop()
line.set_ydata(a1)
plt.draw()
print a1[0]
i += 1
time.sleep(0.1)
plt.pause(0.0001) #add this it will be OK.
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21686 次 |
最近记录: |