Ich versuche, ein Diagramm in Python zu erstellen, in dem die Daten, die geplottet werden, aktualisiert werden, während meine Simulation fortschreitet. In MATLAB ich mit dem folgenden Code tun könnte:Dynamisches Diagramm in Python
t = linspace(0, 1, 100);
figure
for i = 1:100
x = cos(2*pi*i*t);
plot(x)
drawnow
end
Ich versuche matplotlib
‚s FuncAnimation
Funktion im animation
Modul zu tun dies in einer Klasse zu verwenden. Es ruft eine Funktion plot_voltage
auf, die die Spannung nach jedem Zeitschritt in meiner Simulation neu berechnet. Ich habe es wie folgt eingerichtet:
import matplotlib.pyplot as plt
import matplotlib.animation as animation
def __init__(self):
ani = animation.FuncAnimation(plt.figure(2), self.plot_voltage)
plt.draw()
def plot_voltage(self, *args):
voltages = np.zeros(100)
voltages[:] = np.nan
# some code to calculate voltage
ax1 = plt.figure(2).gca()
ax1.clear()
ax1.plot(np.arange(0, len(voltages), 1), voltages, 'ko-')`
Wenn meine Simulation ausgeführt wird, erscheinen die Zahlen, aber nur einfrieren. Der Code läuft jedoch ohne Fehler. Kann mir bitte jemand sagen, was ich vermisse?
Ich würde die dritte Version auf [diese Antwort] anzupassen (http://stackoverflow.com/questions/28074461/animating-growing -line-plot-in-python-matplotlib? rq = 1). – cphlewis
Danke, @cphlewis. Das Problem mit dieser Lösung ist, dass, wenn ich eine andere Funktion habe, sagen wir 'count()', die einfach die positiven ganzen Zahlen hochzählt, und ich führe dies nach 'plt.show()' aus, 'count()' wird erst ausgeführt Ich schließe die Handlung. Das Ersetzen von 'plt.show()' durch 'plt.draw()' bewirkt, dass der Plot überhaupt nicht angezeigt wird, aber dann läuft 'count()'. Wie kann ich das Diagramm aktualisieren, während das Programm fortgesetzt wird und 'count()' läuft? Mein Backend ist Qt5Agg mit aktiviertem interaktivem Modus. –
In der dritten Lösung würde 'update()' beide Ihre 'count()' aufrufen, so dass das Plotten fortgesetzt wird. – cphlewis