Hinweis
Zum Ende springen, um den vollständigen Beispielcode herunterzuladen.
Interaktive Funktionen#
Dies bietet Beispiele für die Verwendung interaktiver Funktionen wie ginput, waitforbuttonpress und manuelles Platzieren von clabel.
Hinweis
Dieses Beispiel demonstriert die interaktiven Fähigkeiten von Matplotlib und wird nicht in der statischen Dokumentation angezeigt. Bitte führen Sie diesen Code auf Ihrem Computer aus, um die Interaktivität zu sehen.
Sie können einzelne Teile kopieren und einfügen oder das gesamte Beispiel über den Link am Ende der Seite herunterladen.
Definieren Sie ein Dreieck durch Anklicken von drei Punkten
plt.figure()
plt.xlim(0, 1)
plt.ylim(0, 1)
tellme('You will define a triangle, click to begin')
plt.waitforbuttonpress()
while True:
pts = []
while len(pts) < 3:
tellme('Select 3 corners with mouse')
pts = np.asarray(plt.ginput(3, timeout=-1))
if len(pts) < 3:
tellme('Too few points, starting over')
time.sleep(1) # Wait a second
ph = plt.fill(pts[:, 0], pts[:, 1], 'r', lw=2)
tellme('Happy? Key click for yes, mouse click for no')
if plt.waitforbuttonpress():
break
# Get rid of fill
for p in ph:
p.remove()
Nun Konturen nach Abstand von den Dreiecksecken - nur ein Beispiel
# Define a nice function of distance from individual pts
def f(x, y, pts):
z = np.zeros_like(x)
for p in pts:
z = z + 1/(np.sqrt((x - p[0])**2 + (y - p[1])**2))
return 1/z
X, Y = np.meshgrid(np.linspace(-1, 1, 51), np.linspace(-1, 1, 51))
Z = f(X, Y, pts)
CS = plt.contour(X, Y, Z, 20)
tellme('Use mouse to select contour label locations, middle button to finish')
CL = plt.clabel(CS, manual=True)
Nun zoomen
tellme('Now do a nested zoom, click to begin')
plt.waitforbuttonpress()
while True:
tellme('Select two corners of zoom, middle mouse button to finish')
pts = plt.ginput(2, timeout=-1)
if len(pts) < 2:
break
(x0, y0), (x1, y1) = pts
xmin, xmax = sorted([x0, x1])
ymin, ymax = sorted([y0, y1])
plt.xlim(xmin, xmax)
plt.ylim(ymin, ymax)
tellme('All Done!')
plt.show()