2013-06-20 27 views
12

tôi thấy điều này hướng dẫn ngắn tuyệt vời trên hình ảnh động:matplotlib imshow(): làm thế nào để animate?

http://jakevdp.github.io/blog/2012/08/18/matplotlib-animation-tutorial/

tuy nhiên tôi không thể tạo ra một imshow hoạt hình() lô cùng thời trang. tôi đã cố gắng để thay thế một số dòng:

# First set up the figure, the axis, and the plot element we want to animate 
fig = plt.figure() 
ax = plt.axes(xlim=(0, 10), ylim=(0, 10)) 
#line, = ax.plot([], [], lw=2) 
a=np.random.random((5,5)) 
im=plt.imshow(a,interpolation='none') 
# initialization function: plot the background of each frame 
def init(): 
    im.set_data(np.random.random((5,5))) 
    return im 

# animation function. This is called sequentially 
def animate(i): 
    a=im.get_array() 
    a=a*np.exp(-0.001*i) # exponential decay of the values 
    im.set_array(a) 
    return im 

nhưng tôi chạy vào lỗi bạn có thể giúp tôi có được chạy này? cảm ơn bạn trước. tốt nhất,

+1

Như một mặt lưu ý, một thói quen tốt để bao gồm những lỗi bạn đang nhận được trong câu hỏi của bạn. – tacaswell

Trả lời

12

Bạn đang rất gần, nhưng có một sai lầm - initanimate nên trở iterables chứa các nghệ sĩ đang được hoạt hình. Đó là lý do tại sao trong phiên bản của Jake, họ trả lại line, (mà thực sự là một bộ) thay vì line (là một đối tượng dòng đơn). Đáng buồn là các tài liệu không rõ ràng về điều này!

Bạn có thể sửa phiên bản của bạn như thế này:

# initialization function: plot the background of each frame 
def init(): 
    im.set_data(np.random.random((5,5))) 
    return [im] 

# animation function. This is called sequentially 
def animate(i): 
    a=im.get_array() 
    a=a*np.exp(-0.001*i) # exponential decay of the values 
    im.set_array(a) 
    return [im] 
+0

đẹp! ký hiệu dấu phẩy này làm tôi bối rối trước đây, nhưng điều này giúp tôi hiểu! – user1805743

+0

vâng, tôi thấy rằng '[danh sách]' rõ ràng hơn nhiều –

Các vấn đề liên quan