Ich bin neu in Python matplotlib
und möchte eine Figur in einer Schleife aktualisiert werden. Dies ist ein einfacher Testcode. Ich möchte 3 Grafiken zeichnen, jede für 2 Sekunden, mit verschiedenen Steigungen jedes Mal. Natürlich weiß ich, dass ich etwas mehr über matplotlib
lesen sollte, aber ich muss etwas schnell machen. Was ist falsch unten? Vielen Dank!Update-Figur innerhalb der Schleife
#!/usr/bin/env python
import matplotlib.pyplot as plt
import numpy as np
import time
def demo(a):
y = [xt*a+1 for xt in x]
ax.plot(x,y)
if __name__ == '__main__':
plt.ion()
fig, ax = plt.subplots()
ax.set_ylim([0,15])
x = range(0,5)
for a in range(1,4):
demo(a)
time.sleep(2)
Ich dachte plt.ion()
es interaktiv und ax.plot(x,y)
wirksam macht sofort (aber nicht erraten). Ich habe versucht, ax.draw()
nach ax.plot(x,y)
hinzuzufügen, aber es erfordert einige Argumente wie Künstler oder etwas, das ich noch nicht weiß :). Auch ich habe diese Fehlermeldung kommen (Ubuntu 14.04.LTS).
Xlib: extension "XInputExtension" missing on display ":1.0".
X Error: BadDrawable (invalid Pixmap or Window parameter) 9
Major opcode: 62 (X_CopyArea)
Resource id: 0x0
EDIT: Ich füge den richtigen Code unten. (Nach Estilus-Lösung, auf die modifizierte ich ein wenig für die korrekte Grafikanzeige.
#!/usr/bin/env python
import matplotlib.pyplot as plt
import numpy as np
import time
def demo(a):
plt.cla()
y = [xt*a+1 for xt in x]
ax.set_ylim([0,15])
ax.plot(x,y)
if __name__ == '__main__':
plt.ion()
fig, ax = plt.subplots()
x = range(5)
for a in range(1,4):
demo(a)
plt.pause(3)
plt.draw()
Mögliches Duplikat von [Wie aktualisiere ich ein Diagramm in matplotlib?] (Http://stackoverflow.com/questions/4098131/how-to-update-a-plot-in-matplotlib) –
Mögliches Duplikat von [Mehrere definieren Diagramme, die mit einer for-Schleife in Matplotlib animiert werden sollen] (http://stackoverflow.com/questions/21937976/defining-multiple-plots-to-be-animated-with-a-for-loop-in-matplotlib) – hashcode55