2015-07-12 171 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