我希望能够在x轴上绘制实时串行数据随时间变化的图形。
我想让x轴动态变化,即当我获取新数据时,窗口长度应保持不变,但是x轴应该移动。
到目前为止,我已经成功绘制了串行数据样本点,但是我无法更改x轴,而y轴的值则不断变化。
我参考了从这个论坛获得的给定代码。
import matplotlib.pyplot as plt
import time
import random
from collections import deque
import numpy as np
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()
plt.pause(0.0001)
我已经更改了random_gen()部分以适应我的情况,并且正在绘制串行数据,但是我提供这段代码是因为否则我将不得不在文件中提供串行数据,这将使事情变得复杂。
我找到了这段代码,可以用来查找时间值
import datetime
dlist = deque([datetime.datetime.now()] * 100)
while 1:
# collect the data .........
dlist.appendleft((datetime.datetime.now()))
我不知道如何动态地改变x轴。
我是Python的新手,可能有些事情做得不对,请忽略这些。
请提供一些建议。
谢谢