Einführung
In diesem Lab lernst du, wie du Matplotlib, eine Python-Bibliothek zur Erstellung von Visualisierungen, verwendest, um eine Figur zu erstellen und ihre Anatomie zu kommentieren. Du wirst lernen, wie du eine Figur erstellst, Daten plottest, Achsengrenzen setzt, Beschriftungen und Titel hinzufügst und die Figur mit Text und Markern kommentierst.
Tipps für die VM
Nachdem der VM-Start abgeschlossen ist, klicke in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.
Manchmal musst du einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund von Einschränkungen in Jupyter Notebook nicht automatisiert werden.
Wenn du bei der Lernphase Probleme hast, kannst du Labby gerne fragen. Gib nach der Sitzung Feedback, und wir werden das Problem für dich prompt beheben.
Bibliotheken importieren und Daten vorbereiten
Zunächst müssen wir die erforderlichen Bibliotheken importieren und einige Daten vorbereiten, um zu plottieren. In diesem Beispiel werden wir drei Sinuswellen mit zufälligem Rauschen darstellen.
import matplotlib.pyplot as plt
import numpy as np
## Set up data
np.random.seed(19680801)
X = np.linspace(0.5, 3.5, 100)
Y1 = 3+np.cos(X)
Y2 = 1+np.cos(1+X/0.75)/2
Y3 = np.random.uniform(Y1, Y2, len(X))
Figur erstellen und Achsen einrichten
Als nächstes werden wir eine Figur erstellen und die Achsen einrichten. Wir werden die Methode add_axes() verwenden, um eine neue Achsenmenge innerhalb der Figur zu erstellen. Wir werden auch Grenzen für die x- und y-Achsen setzen und Rasterlinien hinzufügen.
## Create figure and axes
fig = plt.figure(figsize=(7.5, 7.5))
ax = fig.add_axes([0.2, 0.17, 0.68, 0.7], aspect=1)
## Set limits and gridlines
ax.set_xlim(0, 4)
ax.set_ylim(0, 4)
ax.grid(linestyle="--", linewidth=0.5, color='.25', zorder=-10)
Die Daten plotten
Jetzt werden wir unsere Daten auf den gerade erstellten Achsen plotten. Wir werden die Methode plot() verwenden, um die drei Sinuswellen mit unterschiedlichen Farben und Linienbreiten zu plotten.
## Plot data
ax.plot(X, Y1, c='C0', lw=2.5, label="Blue signal", zorder=10)
ax.plot(X, Y2, c='C1', lw=2.5, label="Orange signal")
ax.plot(X[::3], Y3[::3], linewidth=0, markersize=9,
marker='s', markerfacecolor='none', markeredgecolor='C4',
markeredgewidth=2.5)
Beschriftungen und Titel hinzufügen
Wir werden nun Beschriftungen für die x- und y-Achsen hinzufügen und einen Titel für die Figur mit den Methoden set_xlabel(), set_ylabel() und set_title() setzen.
## Add labels and title
ax.set_xlabel("x-Achsenbeschriftung", fontsize=14)
ax.set_ylabel("y-Achsenbeschriftung", fontsize=14)
ax.set_title("Anatomie einer Figur", fontsize=20, verticalalignment='bottom')
Legende hinzufügen
Wir werden eine Legende zur Figur mit der Methode legend() hinzufügen. Wir werden auch die Position und die Schriftgröße der Legende angeben.
## Add legend
ax.legend(loc="upper right", fontsize=14)
Die Figur annotieren
Schließlich werden wir die Figur annotieren, um die Namen verschiedener Matplotlib-Elemente anzuzeigen, indem wir die Methoden text() und Circle() verwenden. Wir werden auch die Methode withStroke() verwenden, um einem Text und Markern einen weißen Umriss hinzuzufügen, um eine bessere Sichtbarkeit zu gewährleisten.
## Annotate the figure
from matplotlib.patches import Circle
from matplotlib.patheffects import withStroke
royal_blue = [0, 20/256, 82/256]
def annotate(x, y, text, code):
## Kreismarker
c = Circle((x, y), radius=0.15, clip_on=False, zorder=10, linewidth=2.5,
edgecolor=royal_blue + [0.6], facecolor='none',
path_effects=[withStroke(linewidth=7, foreground='white')])
ax.add_artist(c)
## Verwenden Sie path_effects als Hintergrund für die Texte
## Zeichnen Sie die path_effects und den farbigen Text separat, damit die
## path_effects andere Texte nicht abschneiden können
for path_effects in [[withStroke(linewidth=7, foreground='white')], []]:
color = 'white' if path_effects else royal_blue
ax.text(x, y-0.2, text, zorder=100,
ha='center', va='top', weight='bold', color=color,
style='italic', fontfamily='Courier New',
path_effects=path_effects)
color = 'white' if path_effects else 'black'
ax.text(x, y-0.33, code, zorder=100,
ha='center', va='top', weight='normal', color=color,
fontfamily='monospace', fontsize='medium',
path_effects=path_effects)
annotate(3.5, -0.13, "Kleine Strichebezeichnung", "ax.xaxis.set_minor_formatter")
annotate(-0.03, 1.0, "Große Striche", "ax.yaxis.set_major_locator")
annotate(0.00, 3.75, "Kleine Striche", "ax.yaxis.set_minor_locator")
annotate(-0.15, 3.00, "Große Strichebezeichnung", "ax.yaxis.set_major_formatter")
annotate(1.68, -0.39, "x-Beschriftung", "ax.set_xlabel")
annotate(-0.38, 1.67, "y-Beschriftung", "ax.set_ylabel")
annotate(1.52, 4.15, "Titel", "ax.set_title")
annotate(1.75, 2.80, "Linie", "ax.plot")
annotate(2.25, 1.54, "Marker", "ax.scatter")
annotate(3.00, 3.00, "Raster", "ax.grid")
annotate(3.60, 3.58, "Legende", "ax.legend")
annotate(2.5, 0.55, "Achsen", "fig.subplots")
annotate(4, 4.5, "Figur", "plt.figure")
annotate(0.65, 0.01, "x-Achse", "ax.xaxis")
annotate(0, 0.36, "y-Achse", "ax.yaxis")
annotate(4.0, 0.7, "Rahmen", "ax.spines")
Zusammenfassung
In diesem Lab haben Sie gelernt, wie Sie Matplotlib verwenden, um eine Figur zu erstellen und ihre Anatomie zu annotieren. Sie haben gelernt, wie Sie eine Figur erstellen, Daten plotten, Achsengrenzen festlegen, Beschriftungen und Titel hinzufügen und die Figur mit Texten und Markern annotieren. Indem Sie die Schritte in diesem Lab befolgen, sollten Sie jetzt einen guten Überblick darüber haben, wie Sie Matplotlib in Python verwenden, um Figuren zu erstellen und zu annotieren.