Matplotlib - Textbox entfernen

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Lardos
User
Beiträge: 2
Registriert: Dienstag 22. Januar 2019, 18:23

Hallo zusammen,

Ich bin noch ganz neu mit Matplotlib und Python und bin auf folgendes Problem gestoßen:

Ich nutze Matplotlibs Animationen um beim klick auf einen Button einen anzeigen zu lassen. Das klappt auch wunderbar.
Wenn ich den Button ein zweites mal klicke erscheint ein neuer Text. Auch das klappt.

Jetzt möchte ich aber, dass der alte Text wieder gelöscht wird wenn der neue text erscheint.

Ich habe mit set_text() versucht den Text zu ändern, aber leider plottet er den neuen Text einfach über den alten, ohne diesen vorher zu löschen.

Code: Alles auswählen

def update(frame):
    global infoText
    
    if(click == 1):
        infoText = plt.text(0, 0, "setze Startpunkt", fontsize=10, bbox=props) 
    
    if(click == 2):
        infoText.set_text("setze Endpunkt")
Wie stelle ich das am besten an?
Liebe Grüße,
Luca
Benutzeravatar
alexbennik
User
Beiträge: 7
Registriert: Dienstag 16. Dezember 2014, 21:01

So ich versuche das jetzt mal. Ich kenne deinen restlichen Code nicht, aber "EINE" Möglichkeit wäre `plt.cla()`, wenn wahrscheinlich auch nicht die schönste. Ich hatte ähnliche Probleme bei Animationen und habe dann mit `plt.cla()` vllt nicht das optimalste Werkzeug, aber immerhin irgendeine Möglichkeit gefunden:

Code: Alles auswählen

def update(frame):
    if(click == 1):
    	plt.cla()
        plt.text(0, 0, "setze Startpunkt", fontsize=10, bbox=props) 
    
    if(click == 2):
    	plt.cla()
        plt.text(0, 0, "setze Endpunkt", fontsize=10, bbox=props) 
Wichtig hier, `plt.cla()`löscht alles, solltest du noch etwas anderes animiert haben, muss das in jedem Frame neu gebaut werden. Eine andere Möglichkeit wäre auch noch `enumerate()` mit matplotlib.
Antworten