Wie man Plotaktualisierungen in Matplotlib automatisiert
-
canvas.draw()
zusammen mitcanvas_flush_events()
-
plt.draw()
zum Aktualisieren von Plots in Matplotlib
Um die Aktualisierung von Diagrammen in Matplotlib zu automatisieren, aktualisieren wir die Daten, löschen das vorhandene Diagramm und zeichnen dann die aktualisierten Daten in einer Schleife. Zum Löschen der vorhandenen Diagramme verwenden wir verschiedene Methoden wie canvas.draw()
zusammen mit canvas_flush_events()
, plt.draw()
und clear_output()
.
canvas.draw()
zusammen mit canvas_flush_events()
Wir müssen die Handlung einmal konfigurieren. Dann könnten wir die Daten der Plot-Objekte mit set_xdata()
und set_ydata()
aktualisieren und schließlich den Plot mit canvas.draw()
aktualisieren.
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()
schaltet den interaktiven Modus ein. Der Plot wird nicht aktualisiert, wenn plt.ion()
nicht aufgerufen wird.
canvas.draw()
ist eine Methode, die auf JavaScript basiert, um Figuren anzuzeigen, und canvas.flush_events()
basiert ebenfalls auf JavaScript, um Figuren zu löschen.
plt.draw()
zum Aktualisieren von Plots in Matplotlib
Wir verwenden die Funktion matplotlib.pyplot.draw()
, um geänderte Zahlen zu aktualisieren, was uns ermöglicht, im interaktiven Modus zu arbeiten. Um die Plots zu aktualisieren, müssen wir vorhandene Zahlen löschen, wofür wir matplotlib.pyplot.clf()
und matplotlib.axes.Axes.clear()
verwenden können.
Mit 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)
Ausgabe:
Mit 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()
Ausgabe:
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn