Notiz
Klicken Sie hier , um den vollständigen Beispielcode herunterzuladen
Rechteck- und Ellipsen-Selektoren #
Klicken Sie irgendwo, bewegen Sie die Maus und lassen Sie die Maustaste los.
RectangleSelector
und EllipseSelector
zeichnen Sie ein Rechteck oder eine Ellipse von der anfänglichen Klickposition zur aktuellen Mausposition (innerhalb der gleichen Achsen), bis die Taste losgelassen wird. Ein verbundener Callback empfängt die Click- und Release-Events.
from matplotlib.widgets import EllipseSelector, RectangleSelector
import numpy as np
import matplotlib.pyplot as plt
def select_callback(eclick, erelease):
"""
Callback for line selection.
*eclick* and *erelease* are the press and release events.
"""
x1, y1 = eclick.xdata, eclick.ydata
x2, y2 = erelease.xdata, erelease.ydata
print(f"({x1:3.2f}, {y1:3.2f}) --> ({x2:3.2f}, {y2:3.2f})")
print(f"The buttons you used were: {eclick.button} {erelease.button}")
def toggle_selector(event):
print('Key pressed.')
if event.key == 't':
for selector in selectors:
name = type(selector).__name__
if selector.active:
print(f'{name} deactivated.')
selector.set_active(False)
else:
print(f'{name} activated.')
selector.set_active(True)
fig = plt.figure(constrained_layout=True)
axs = fig.subplots(2)
N = 100000 # If N is large one can see improvement by using blitting.
x = np.linspace(0, 10, N)
selectors = []
for ax, selector_class in zip(axs, [RectangleSelector, EllipseSelector]):
ax.plot(x, np.sin(2*np.pi*x)) # plot something
ax.set_title(f"Click and drag to draw a {selector_class.__name__}.")
selectors.append(selector_class(
ax, select_callback,
useblit=True,
button=[1, 3], # disable middle button
minspanx=5, minspany=5,
spancoords='pixels',
interactive=True))
fig.canvas.mpl_connect('key_press_event', toggle_selector)
axs[0].set_title("Press 't' to toggle the selectors on and off.\n"
+ axs[0].get_title())
plt.show()
Verweise
In diesem Beispiel wird die Verwendung der folgenden Funktionen, Methoden, Klassen und Module gezeigt: