2014-09-20 58 views
4

我想在x軸上繪製實時串行數據與時間的關係曲線。 我希望x軸動態變化,即當我得到新數據時,窗口長度應保持相同,但x軸應該移位。繪製x軸上的時間數據並使用python實時調整它

到目前爲止,我已經能夠繪製串行數據樣本採樣點,並且我無法更改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軸動態。

我是新來的蟒蛇可能有一些事情,我可能做錯了,請忽略這些

請給一些建議。

感謝

+0

我沒有搜索matplotlib在谷歌動態的,但我沒有找到任何這對我來說是有用的,你能不能請註明鏈接 – yuvraj 2014-09-20 08:34:59

+0

對不起,我誤解你的問題 – joaquin 2014-09-20 09:12:36

+0

在您提供的示例中,新數據插入左側。但是你寫*「我希望x軸動態變化,即當我得到新數據時,窗口長度應保持相同,但x軸應該改變。」*你能詳細說明你有什麼和你想要什麼嗎?請在文本和邏輯上分開你的兩個問題。這有助於讀者閱讀。 – sebix 2014-09-20 12:13:02

回答

0

也許我誤解你的問題,但不能使用plt.xlim()和每次添加新數據時更新呢?使用您的示例循環將改變爲:

for i in range(0,20): 
    a1.appendleft(next(d)) 
    datatoplot = a1.pop() 
    line.set_ydata(a1) 
    plt.xlim(0, 20 + i) 
    plt.draw() 
    plt.pause(0.0001) 
相關問題