Я хочу реализовать анимацию Matplotlib в TKinter. После того, как я нажму кнопку «Выполнить», появится пустая цифра. Ниже приведен пример моего кода:
import tkinter as tk
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
import matplotlib.animation as animation
import matplotlib.pyplot as plt
import pandas as pd
def run():
button.destroy()
raw_data = {
'x_value': [0, 1, 2, 3, 4],
'total_1': [1000, 1006, 1003, 1007, 1005],
'total_2': [1000, 1003, 1007, 1005, 1006]
}
data = pd.DataFrame(raw_data)
def animate(i):
plt.cla()
plt.plot(data.loc[:i, 'x_value'], data.loc[:i, 'total_1'], data.loc[:i, 'total_2']) # Plot seven line into plot
fig = plt.figure()
canvas = FigureCanvasTkAgg(fig, root)
canvas.get_tk_widget().grid()
# global ani
ani = animation.FuncAnimation(fig, animate, interval=1000)
root = tk.Tk()
button = tk.Button(root, text='Run', command=run)
button.grid()
root.mainloop()
После некоторых тестов возвращаемое значение animation.FuncAnimation «ani» должно быть go глобальным для запуска графика анимации. Я не хочу использовать глобальный метод в своем коде. Есть ли другой способ заменить глобальный метод? Почему для отображения сюжета анимации значение должно быть глобальным?