2016-07-22 3 views
0

Привет, ребята, я совсем новичок в python/matplotlib.Как аргумент функции определяется в анимации matplotlib?

Я изо всех сил пытаюсь понять следующий код анимации на веб-сайте matplotlib. Как это данные аргумент в Защиту обновления определяется, если эта функция вызывается в animation.FuncAnimation Whithout указания каких-либо данные как входной параметр?

import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.animation as animation 

fig, ax = plt.subplots() 
line, = ax.plot(np.random.rand(10)) 
ax.set_ylim(0, 1) 


def update(data): 
    line.set_ydata(data) 
    return line, 


def data_gen(): 
    while True: 
     yield np.random.rand(10) 

ani = animation.FuncAnimation(fig, update, data_gen, interval=100) 
plt.show() 

ответ

1

data_gen представляет собой генератор, который, для каждого кадра анимации, даст массив из 10 случайных значений. Массив, возвращаемый с data_gen, является тем, что передается вашей функции update в качестве первого входного аргумента.

Если вы назвали FuncAnimation с помощью fargs kwarg, можно также передать дополнительные вклад в функции update.

def update(data, scale): 
    line.set_ydata(scale * data) 
    return line 

animation.FuncAnimation(fig, update, data_gen, fargs=(100,), interval=100) 
+0

Спасибо Suever, мне было интересно ... есть ли способ генерировать анимацию намного проще? Как в GNU октаве, когда вы просто выполняете последовательные вызовы на график (x, y)? –

+0

@PintoDoido Да, вы можете. [здесь сообщение] (http://stackoverflow.com/questions/4098131/how-to-update-a-plot-in-matplotlib) с некоторыми способами для достижения этого – Suever