Osadzanie animacji matplotlib w ramce tkinter
W przypadku projektu pracuję nad prostym symulatorem ruchu harmonicznego (jak masa oscyluje w czasie). Mam dane wyprodukowane poprawnie i już mam wykres utworzony w ramce pracy tkinter. W tej chwili pokazuje tylko statyczny wykres, gdzie moim celem jest wyświetlenie wykresu jako animacji w czasie.
Dla ułatwienia stworzyłem makietę programu, używając następującego kodu:
#---------Imports
from numpy import arange, sin, pi
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
import tkinter as Tk
from tkinter import ttk
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
#---------End of imports
fig, ax = plt.subplots()
x = np.arange(0, 2*np.pi, 0.01) # x-array
line, = ax.plot(x, np.sin(x))
def animate(i):
line.set_ydata(np.sin(x+i/10.0)) # update the data
return line,
ani = animation.FuncAnimation(fig, animate, np.arange(1, 200), interval=25, blit=False)
#plt.show() #What I want the object in tkinter to appear as
root = Tk.Tk()
label = ttk.Label(root,text="SHM Simulation").grid(column=0, row=0)
canvas = FigureCanvasTkAgg(fig, master=root)
canvas.show()
canvas.get_tk_widget().grid(column=0,row=1)
Tk.mainloop()
Ten kod wyświetli animację, którą chcę w ramce tkinter, gdy komenda plt.show () jest odkomentowana. Chciałbym móc umieścić tę animację w ramach tkinter.
Byłem także na stronie matplotlib i przeglądałem wszystkie przykłady animacji i żaden z nich nie pomógł. Spojrzałem też na pytanie „21179971” na tej stronie i umieściłem przycisk tkinter na rysunku pyplot, podczas gdy chciałbym umieścić figurę w ramce tkinter.
Aby wyjaśnić, chciałbym móc umieścić animację wyprodukowaną, gdy „# plt.show ()” jest odkomentowany w ramce tkinter, tj. (Root = tk ())