2017-09-02 1 views
0
import time 
import matplotlib.pyplot as plt 

xvalues = [1,2,3,4,5,6,7,8,9] 
yvalues = [1,3,5,9,8,7,8,5,6] 
plt.xlabel('time in hours') 
plt.ylabel('ph') 
plt.plot([xvalues],[yvalues], 'ro') 
plt.axis ([0,10,0,15]) 
plt.show() 
time.sleep(1) 
clf() 

Ich möchte eine Figur mit einem Plot machen, und löschen Sie die Abbildung nach einer bestimmten Zeit. Aber wenn ich es versuche, bekomme ich den Fehler: undefinierter Name in der letzten Zeile, wo ich die Figur löschen möchte.Fehler: undefinierter Name, wenn ich clf() in Matplotlib

Antwort

1

In Bezug auf den Fehler: clf() ist nicht definiert, möchten Sie stattdessen plt.clf() verwenden.

plt.clf() löscht die Abbildung jedoch nicht. Es löscht nur die Figur. Vielleicht möchten Sie lesen When to use cla(), clf() or close() for clearing a plot in matplotlib?

Leider ist nicht ganz klar aus der Frage, was das erwartete Verhalten des Codes ist. Wenn Sie es als Skript ausführen, bleibt das Figurenfenster geöffnet, bis Sie es manuell schließen. Nur dann wird jeder Code nach plt.show() ausgeführt. Die Verwendung von time.sleep() würde dann keinen Sinn machen und das Löschen der Figur ist unnötig, da das Skript sowieso danach aufhört und den Speicher löscht.

Wenn Sie dies stattdessen im interaktiven Modus (plt.ion()) ausführen möchten, können Sie plt.pause(1) verwenden, um eine Pause von 1 Sekunde zu machen und dann die Figur zu schließen.

import matplotlib.pyplot as plt 

plt.ion() 

xvalues = [1,2,3,4,5,6,7,8,9] 
yvalues = [1,3,5,9,8,7,8,5,6] 
plt.xlabel('time in hours') 
plt.ylabel('ph') 
plt.plot([xvalues],[yvalues], 'ro') 
plt.axis ([0,10,0,15]) 
plt.show() 

plt.pause(1) 
plt.close() 
Verwandte Themen