Warum zeichnet Matplotlib Updates für die erste interaktive Handlung, die ich zeige, aber nicht das zweite?Python

Python-Programme
Anonymous
 Warum zeichnet Matplotlib Updates für die erste interaktive Handlung, die ich zeige, aber nicht das zweite?

Post by Anonymous »

Ich versuche zwei interaktive Handlungen zu zeigen. Das zweite Diagramm wird angezeigt, nachdem das erste Grundstück geschlossen wurde. In diesem minimalen Beispiel zeichnet der interaktive Teil nur einen Punkt, an dem der Benutzer die Koordinaten zur Konsole klickt und druckt. < /P>

Code: Select all

import matplotlib.pyplot as plt

def onclick(event):
# This prints both times
print(event.xdata, event.ydata)
# This only works the first time
plt.scatter(event.xdata, event.ydata)

for i in range(2):
plt.plot([1, 2, 3, 4])
plt.gca().figure.canvas.mpl_connect('button_press_event', onclick)
with plt.ion():
plt.show(block=True)
< /code>
Verwenden des obigen Codes werden Punkte nicht im zweiten Diagramm angezeigt. Es druckt immer noch die Koordinaten, sodass das Ereignis schießt; Es zeichnet einfach nicht. Alles andere funktioniert. ) < /li>
[*]plt.close()
als letzter Schritt in der Schleife
[*]

Code: Select all

plt.pause(1)
Als LEDZTER SCHRITT IN DER SCHLEFE
[*] Verwenden Sie PLT.ION () und plt.ioff () anstelle des Context Manager
[*] Das Ereignis am Ende der Schleife unter Verwendung von Canvas.mpl_disconnect (CID) mit der CID aus Mpl_connect
[*] manuell abnehmen.

Code: Select all

plt.draw()
& plt.pause (1) Um Updates zu erzwingen,
[*] Kopieren und Einfügen desselben Code > Verwenden Sie in der Schleife und Ax.Scatter () im Onclick -Handler, um explizit in dieselben Achsen zu zeichnen
< /ul>
Ich verwende Matplotlib 3.9.4 in Python 3.9.20 für Kompatibilität mit Dingen, die jenseits meiner Kontrolle über meine Kontrolle hinausgehen. < /p>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post