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()
[*]
Code: Select all
plt.pause(1)
[*] 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()
[*] 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>