Comment automatiser les mises à jour de tracé dans Matplotlib

Pour automatiser la mise à jour du tracé dans Matplotlib, nous mettons à jour les données, effaçons le tracé existant, puis traçons les données mises à jour en boucle. Pour effacer les tracés existants, nous utilisons plusieurs méthodes telles que canvas.draw()
avec canvas_flush_events()
, plt.draw()
et clear_output()
.
canvas.draw()
avec canvas_flush_events()
Nous devons configurer l’intrigue une fois. Ensuite, nous pourrions mettre à jour les données des objets de tracé avec set_xdata()
et set_ydata()
et enfin mettre à jour le tracé en utilisant canvas.draw()
.
import numpy as np
import time
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 100)
y = np.cos(x)
plt.ion()
figure, ax = plt.subplots(figsize=(8,6))
line1, = ax.plot(x, y)
plt.title("Dynamic Plot of sinx",fontsize=25)
plt.xlabel("X",fontsize=18)
plt.ylabel("sinX",fontsize=18)
for p in range(100):
updated_y = np.cos(x-0.05*p)
line1.set_xdata(x)
line1.set_ydata(updated_y)
figure.canvas.draw()
figure.canvas.flush_events()
time.sleep(0.1)
plt.ion()
active le mode interactif. Le tracé ne sera pas mis à jour si plt.ion()
n’est pas appelé.
canvas.draw()
est une méthode basée sur JavaScript pour afficher les chiffres et canvas.flush_events()
est également basée sur JavaScript pour effacer les chiffres.
plt.draw()
pour mettre à jour les tracés dans Matplotlib
Nous utilisons la fonction matplotlib.pyplot.draw()
pour mettre à jour les figures modifiées qui nous permettent de travailler en mode interactif. Pour mettre à jour les tracés, nous devons effacer les chiffres existants pour lesquels nous pouvons utiliser matplotlib.pyplot.clf()
et matplotlib.axes.Axes.clear()
.
Avec plt.clf()
import numpy as np
import time
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 100)
y = np.cos(x)
plt.ion()
figure, ax = plt.subplots(figsize=(8,6))
line1, = ax.plot(x, y)
plt.title("Dynamic Plot of sinx",fontsize=25)
plt.xlabel("X",fontsize=18)
plt.ylabel("sinX",fontsize=18)
for p in range(100):
updated_y = np.cos(x-0.05*p)
line1.set_xdata(x)
line1.set_ydata(updated_y)
figure.canvas.draw()
figure.canvas.flush_events()
time.sleep(0.1)
Production:
Avec fig.clear()
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
y = np.cos(x)
fig = plt.figure()
for p in range(50):
p=3
updated_x=x+p
updated_y=np.cos(x)
plt.plot(updated_x,updated_y)
plt.draw()
x=updated_x
y=updated_y
plt.pause(0.2)
fig.clear()
Production:
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn