[Matplotlib-users] live plot

Rached Zakhama rached.zakhama at 3-5lab.fr
Wed May 29 10:43:58 EDT 2019


Hi,

I was trying to make a live plot with tkinter where I can see the data 
updating live in a for loop. I used a tkinter window to plot the 
matplotlib figure and I added a button. The problem is that I can't make 
the button work during the for loop.

My example is :

##############################

# imports

import numpy as np
from time import sleep
import matplotlib
matplotlib.use("TkAgg")
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, 
NavigationToolbar2TkAgg
from matplotlib.figure import Figure
from matplotlib.pyplot import pause
import tkinter as tk

fenetre = tk.Tk()
# update function , called whenever the user hit the button : changes 
the plot line color
def update():
     n=np.random.randint(4)
     colors=['b','g','r','c']
     l.set_color(colors[n])
     canvas.show()
# tkinter button, changes the line color
bouton = tk.Button(fenetre, text="change color", command=update)
bouton.pack()
# create random data
x=np.array([i for i in range(10)])
y=np.random.randn(10)
# create matplotlib figure and plot
fig=Figure(figsize=(5,5))
ax=fig.add_subplot(111)
l,=ax.plot(x,y)
# put the figure in the tkinter window
canvas=FigureCanvasTkAgg(fig,fenetre)
canvas.show()
canvas.get_tk_widget().pack(side=tk.TOP,fill=tk.BOTH, expand=True)
# add the toolbar
toolbar= NavigationToolbar2TkAgg(canvas,fenetre)
toolbar.update()
canvas._tkcanvas.pack(side=tk.TOP,fill=tk.BOTH, expand=True)

# update random data every  2 seconds
for i in range(15):
     sleep(2)
     y=np.random.randn(10)
     l.set_ydata(y)
     canvas.show()


tk.mainloop()

######################

I am trying to see a plot random data changing on the screen every 2 
seconds and change its color whenever I hit the button. It doesn't work 
since apparently Python  doesn't execute the button command before 
finishing the loop.

Do you have any suggestions.

Waiting hopefully for your replay.

Best regards.

___________________________________________________________________
Rached ZAKHAMA
Bureau 2B1 33
Thales Research & Technology
III-V lab, 91120 Palaiseau,France

tel: +33(0)169416021  +33(0)658787715 <callto:+33%280%29169416021>
___________________________________________________________________
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20190529/a920eeef/attachment-0001.html>


More information about the Matplotlib-users mailing list