Есть ли другой способ запустить Matplotlib animation.FuncAnimation без global? - PullRequest
0 голосов
/ 14 июля 2020

Я хочу реализовать анимацию 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 глобальным для запуска графика анимации. Я не хочу использовать глобальный метод в своем коде. Есть ли другой способ заменить глобальный метод? Почему для отображения сюжета анимации значение должно быть глобальным?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...