2015-07-12 165 views
-1

我想用matplotlib動畫在社區的幫助下實時繪製兩個列表,我可以繪製我的圖形。我現在想要簡化我的實時動畫以及重構我的圖形。如何在matplotlib動畫中將圖形尺寸調整爲固定尺寸

這裏是我的目標:

  1. 標繪X軸:列表 「my_average」
  2. 劇情y軸的長度:在列表 「my_average」 元素
  3. y軸限制-1到1(在列表中的所有元素我「my_average」是-1到1之間)

我不知道我在做什麼錯我的代碼迄今:

class StdOutListener(StreamListener): 
    def on_data(self, data): 
     json_load = json.loads(data) 
     texts = json_load['text'] # string 
     #print(texts) 

     #drop zero in list 
     if 0 in my_list: my_list.remove(0) 
     #print  




     #calculate average 
     average = numpy.mean(my_list) 
     b = my_average.append(average) 
     print "average =", my_average 



    def __init__(self): 
     self.start_time = time.time() 
     self.x = [len(my_average)] 
     self.y = [my_average] 
     self.my_average = [] 
     self.line_actual, = plot(self.x, self.y)     # line stores a Line2D we can update 
     self.line_average, = plot(self.x, self.my_average)  # line stores a Line2D we can update 


    def on_data(self, new_value): 
    time_delta = time.time() - self.start_time    # on our x axis we store time since start 
    self.x.append(time_delta) 
    self.y.append(new_value) 
    self.my_average.append(numpy.mean(self.y)) 
    self.line_actual.set_data(self.x, self.y) 
    self.line_average.set_data(self.x, self.my_average) 
    ylim([min(self.y), max(self.y)])  # update axes to fit the data 
    xlim([0, max(self.x)]) 
    draw()         # redraw the plot 

ion()          # ion() allows matplotlib to update animations. 

out_listener = StdOutListener() 
for i in range(10000): 
    out_listener.on_data(i + numpy.random.randint(-5,5)) 

預先感謝您

+0

有你爲什麼張貼〜20個空行代碼中的具體原因請格式化你的代碼正常。 – hitzg

+0

有問題嗎? – hitzg

+0

@hitzg對不起,他們已被刪除額外的空間。 現在的問題是,我該如何調整這張圖的固定y軸限制(-1,1)和我的X軸如何繪製列表的長度。 – RustyShackleford

回答

1

所以:

  1. 我不知道你的列表的劇情長的意思。但我假設你想創建一個索引數組,索引從0到len(my_average)。也就是說range是什麼:

    self.x = range(len(my_average)) 
    
  2. 你已經使用ylim功能,這不正是你想要的東西。但是,而不是通過你的數據的最小/最大,你只需要通過所需的靜態值:

    ylim(-1, 1) 
    
+0

完美謝謝! – RustyShackleford