Встраивание анимированного matplotlib в тк

Я довольно новичок в Python и настоящий новичок в tkinter и matplotlib. У меня есть следующий код, который по сути является испытательным стендом для того, что я в конечном итоге хочу сделать.

#!/usr/bin/env python 
import  numpy as np
from  matplotlib import  pyplot as plt
import time

top = 100
plt.ion () # set plot to animated
xdata = []
c = 0
for a in range(0,top):
 xdata.append(a)
 c+=1
ydata =  [ 0 ] *  top * 10
ax1 = plt.axes ()  
c = 0
myfile = open("rdata.txt", "r")
for myline in myfile:
q = myline
ydata[c] = q 
c+=1
c = 0
# Make plot
line, =  plt.plot (ydata[0:60])

myfile = open("rdata.txt", "r")

for p in range(0, top * 10):
for myline in myfile:
      q = int(myline)
      ydata.append (q)
      del  ydata [ 0 ]
      line.set_xdata (np.arange ( len (ydata)))
      line.set_ydata (ydata)   # update the data
      time.sleep(0.01)
      plt.draw () # update the plot 

#   c +=1


file.close(myfile)

Как я могу вставить это в tkinter. Я искал несколько часов и натолкнулся на множество предложений, но, похоже, ни одно из них не относится к динамическим графикам. Если кто-то хочет увидеть данные, которые использует эта программа, я создал ее с помощью следующего кода.

#!/usr/bin/env python
import random

myfile = open("rdata.txt", "w")
myfile.write("100\n")
myfile.write("0\n")
for x in range(2,100):
 q = random.randint(10,90)
 myfile.write(str(q))
 myfile.write("\n")

file.close(myfile)

Конечно, может быть, я просто не правильно понимаю

1 ответ

Вот пример, я добавил кнопку, которая запускает анимацию:

import numpy as np
import matplotlib

matplotlib.use("TKAgg")
import pylab as pl
fig, ax = pl.subplots()
p = 0
x = np.linspace(0, 10, 200)
y = np.sin(x+p)
line, = ax.plot(x, y)
canvas = fig.canvas.get_tk_widget()

from Tkinter import Button

def anim():
    global p
    p += 0.04
    y = np.sin(x+p)
    line.set_data(x, y)
    fig.canvas.draw()
    canvas.after(50, anim)

def go():
    anim()

b = Button(canvas.master, text="go", command=go)
b.pack()
pl.show()
Другие вопросы по тегам