Einführung
Pfeile werden häufig verwendet, um Grafiken zu annotieren. In diesem Tutorial wird gezeigt, wie man Pfeile zeichnet, die sich anders verhalten, wenn die Datengrenzen in einem Graphen geändert werden.
VM-Tipps
Nachdem der VM-Start abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu öffnen.
Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund der Einschränkungen in Jupyter Notebook nicht automatisiert werden.
Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.
Kopfform im Anzeigeraum fix, Ankerpunkte im Datenraum fix
Dies ist nützlich, wenn Sie einen Graphen annotieren und den Pfeil nicht verändern möchten, wenn Sie den Graphen verschieben oder skalieren.
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
x_tail = 0.1
y_tail = 0.5
x_head = 0.9
y_head = 0.8
dx = x_head - x_tail
dy = y_head - y_tail
fig, axs = plt.subplots(nrows=2)
arrow = mpatches.FancyArrowPatch((x_tail, y_tail), (x_head, y_head),
mutation_scale=100)
axs[0].add_patch(arrow)
arrow = mpatches.FancyArrowPatch((x_tail, y_tail), (x_head, y_head),
mutation_scale=100)
axs[1].add_patch(arrow)
axs[1].set(xlim=(0, 2), ylim=(0, 2))
plt.show()
Kopfform und Ankerpunkte im Anzeigeraum fix
Dies ist nützlich, wenn Sie einen Graphen annotieren und den Pfeil nicht verändern möchten, wenn Sie den Graphen verschieben oder skalieren.
fig, axs = plt.subplots(nrows=2)
arrow = mpatches.FancyArrowPatch((x_tail, y_tail), (x_head, y_head),
mutation_scale=100,
transform=axs[0].transAxes)
axs[0].add_patch(arrow)
arrow = mpatches.FancyArrowPatch((x_tail, y_tail), (x_head, y_head),
mutation_scale=100,
transform=axs[1].transAxes)
axs[1].add_patch(arrow)
axs[1].set(xlim=(0, 2), ylim=(0, 2))
plt.show()
Ganzes Patch im Datenraum fix
fig, axs = plt.subplots(nrows=2)
arrow = mpatches.Arrow(x_tail, y_tail, dx, dy)
axs[0].add_patch(arrow)
arrow = mpatches.FancyArrow(x_tail, y_tail -.4, dx, dy,
width=.1, length_includes_head=True, color="C1")
axs[0].add_patch(arrow)
axs[0].arrow(x_tail + 1, y_tail -.4, dx, dy,
width=.1, length_includes_head=True, color="C2")
arrow = mpatches.Arrow(x_tail, y_tail, dx, dy)
axs[1].add_patch(arrow)
arrow = mpatches.FancyArrow(x_tail, y_tail -.4, dx, dy,
width=.1, length_includes_head=True, color="C1")
axs[1].add_patch(arrow)
axs[1].arrow(x_tail + 1, y_tail -.4, dx, dy,
width=.1, length_includes_head=True, color="C2")
axs[1].set(xlim=(0, 2), ylim=(0, 2))
plt.show()
Zusammenfassung
In diesem Tutorial wurde gezeigt, wie man Pfeile zeichnet, die sich anders verhalten, wenn die Datengrenzen in einem Graphen geändert werden. Es wurden drei Anwendungsfälle für das Zeichnen von Pfeilen behandelt, je nachdem, ob die Kopf- oder Ankerpunkte im Daten- oder Anzeigeraum fix bleiben sollen. Diese Anwendungsfälle können nützlich sein, um Grafiken zu annotieren und sicherzustellen, dass der Pfeil auch dann an der richtigen Position bleibt, wenn der Graph verschoben oder skaliert wird.