2017-07-18 95 views
-1

我有一個csv文件,包含以下列{time,x,y,z}和大約100000行。我想實時「實時流動/動畫」數據,以便我可以瞭解發生的情況。如何在python中繪製/流數據來自csv文件?

嘗試:

def generate_pieces(file, piecesize=128): 

piece = [] 
for i, line in enumerate(file): 
    if (i % piecesize == 0 and i > 0): 
     yield piece 
     del piece[:] 
    piece.append(line) 
yield piece 

file = csv.reader(open('file_name.csv')) 
for piece in generate_pieces(file): 
     x_data = [] 
     y_data = [] 
     z_data = []    
     t_vec = [] 

     for row in piece: 
      x_data.append(row[1]) 
      y_data.append(row[2]) 
      z_data.append(row[3]) 
      d = datetime.datetime.strptime(row[0], '%Y-%m-%d-%H%M%S') 
      d_simp = (d.hour+ (1/60)*d.minute + (1/3600)*d.second) 
      conversion = 86400*d.day+3600*d.hour+60*d.minute + d.second        
      t_vec.append(conversion)        

     x_data = [int(i) for i in x_data] # Converts values to int type.  
     y_data = [int(i) for i in y_data]   
     z_data = [int(i) for i in z_data] 

所以我嘗試包括在現場的情節在同一時間服用在這裏,我要流128點長度128的數據塊?我不知道在哪裏何去何從

+0

代碼中沒有動畫。你有沒有搜索「matplotlib動畫」?結果對你有多大幫助? – ImportanceOfBeingErnest

回答

0

考慮使用matplotlib爲了這個目的,它可以幫助情節數據的時間間隔與動畫

示例代碼

import matplotlib.pyplot as plot 
import matplotlib.animation as animation 

figure = plot.figure() 
axis= figure.add_subplot(1,1,1) 

def animateplots(i): 

    #Prepare data for plot 
    axis.clear() 
    axis.plot(x,y,z) 

ani = animation.FuncAnimation(figure, animateplots, interval=<intended interval>) 
plot.show() 

希望我對你的問題的理解是正確的,如果是這樣的話,考慮閱讀更多關於matplotlib的圖形繪製需求

+0

感謝您的有用反饋。所以我應該將每件作品傳遞給我的for循環中的animateplots函數?謝謝 – Sjoseph

+0

單獨配置間隔..一次傳遞所有數據..也可以通過使用傳遞數據的交錯處理來測試繪圖動畫。看到行爲 –

相關問題