Я не понимаю, почему счетчик внутри деактивированной функции не добавляется сам к себе.
Я пытался использовать анимацию для печати новых значений двух списков значений, каждый на каждой оси, каждыйсекунда.
РЕДАКТИРОВАНИЕ: Код:
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [1, 12, 10, 1, 5, 3, 5, 7, 4, 4]
x_vals = []
y_vals = []
cnt = 0
def animate(i, cnt):
print(cnt)
print('loop ' + str(cnt))
x_vals.append(x[cnt])
y_vals.append(y[cnt])
print(x_vals, y_vals)
cnt += 1 # this is not happening
plt.plot(x_vals, y_vals, label='Price')
ani = FuncAnimation(plt.gcf(), animate, fargs=(cnt,), interval=1000)
# plt.tight_layout()
plt.show()
Я объявляю cnt вне функции animate и получаю этот вывод (спасибо PartialOrder user):
0
loop 0
[1] [1]
0
loop 0
[1, 1] [1, 1]
0
loop 0
[1, 1, 1] [1, 1, 1]
....
. Это показывает, что цикл в функции animate выполняется каждую секунду, но счетчик не добавляется, потому что каждый цикл сбрасывается в ноль. И если объявить cnt counter перед функцией (не переданной в аргументе), я получу:
File "test3.py", line 13, in animate
print('loop ' + str(cnt))
UnboundLocalError: local variable 'cnt' referenced before assignment
В обоих случаях я получу пустой график:
введите описание изображения здесь
Почему счетчик не добавляется и как передать внешний счетчик в функцию?
Спасибо!