Некоторые части кода мне неясны: использование canvas.show()
(которого даже не должно существовать) и использование plt.show()
(что не имеет смысла, учитывая, что вы не создали ни одного цифра пиплота вообще)
Учитывая, что canvas = FigureCanvasTkAgg(fig, master=ROOT)
используется в большинстве примеров, я не знаю, почему бы не использовать его.
Цикл в конце файла не кажется полезным. Вместо этого у вас есть цикл анимации для изменения ваших данных.
Наконец, вы забыли запустить программу, т.е. ROOT.mainloop()
.
from Tkinter import *
import matplotlib
matplotlib.use("TkAgg")
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
import matplotlib.animation as animation
# Data simulation imports
import time
def animate(i):
a.clear()
data.append(i)
a.plot(data)
data = []
# GUI Set-Up
ROOT = Tk()
f = Frame(ROOT)
plt.style.use('ggplot')
fig = Figure(figsize=(12, 7), dpi=100)
a = fig.add_subplot(221)
a.set_title("Data")
canvas = FigureCanvasTkAgg(fig, master=ROOT)
canvas.get_tk_widget().pack(side=BOTTOM, fill=BOTH, expand=True)
canvas._tkcanvas.pack(side=TOP, fill=BOTH, expand=True)
Frame.pack(f)
ani = animation.FuncAnimation(fig, animate, interval=1000)
ROOT.mainloop()