Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Weitere Grafiken mit Matplotlib

Stellen wir den Fehlerverlauf in einem kartesischen Koordinatensystem und einem Koordinatensystem mit logarithmischer y-Achse dar:

<Figure size 1000x500 with 2 Axes>

Wir sehen, dass eine QQ-linear konvergente Folge im Plot mit logarithmischer y-Achse einer lineare Funktion ist.

Analog dazu kann man auch die xx-Achse mit plt.semilogx() logatithmisch skalieren, was bei oben vorgestellter Anwendung allerdings wenig Sinn macht.

Balken-, Linien- und Kuchendiagramme

Schauen wir uns weitere elementare Plot-Typen an. Angenommen wir haben die Auswertung einer Umfrage vorliegen, und möchten diese graphisch aufbereiten. Unsere Beispieldaten sind:

Erstellung der Farbpalette

Dieser Python-Code verwendet die Bibliotheken matplotlib.pyplot und matplotlib.colors, um eine übersichtliche Visualisierung verschiedener Farbpaletten in Tabellenform zu erstellen. Mit Hilfe einer zentralen Funktion namens plot_colortable werden Farbnamen und ihre entsprechenden Farbfelder grafisch dargestellt. Der Code zeigt dabei exemplarisch drei verschiedene Farbsets: die Grundfarben (BASE_COLORS), die Tableau-Palette (TABLEAU_COLORS) sowie die CSS4-Farben (CSS4_COLORS), die allesamt vordefinierte Farbnamen aus Matplotlibs Farbsystem sind. Optional ließe sich auch die sehr umfangreiche XKCD-Farbsammlung darstellen, was allerdings eine sehr große Grafik erzeugen würde.

Praktisch ist dieser Code besonders nützlich, wenn man sich einen schnellen Überblick über verfügbare Farben und deren Namen verschaffen möchten – etwa bei der Auswahl konsistenter Farben für Diagramme, Benutzeroberflächen oder Präsentationen. Die Farben können alphabetisch oder nach Farbwerten sortiert angezeigt werden, was eine einfache Orientierung innerhalb großer Farbsammlungen ermöglicht.

<Figure size 872x118 with 1 Axes>
<Figure size 872x162 with 1 Axes>
<Figure size 872x866 with 1 Axes>

Plots für Skalar- und Vektorfelder

Auch für die graphische Darstellung von Skalarfeldern f ⁣:R2→Rf\colon \mathbb{R}^2 \to \mathbb{R} und Vektorfeldern F⃗ ⁣:R2→R2\vec F\colon \mathbb{R}^2 \to \mathbb{R}^2 stehen einige Funktionen in Matplotlib bereit. Die meisten Funktionen zur Darstellung von Skalarfeldern erwarten als Argument 3 Matrizen, eine für die xx-Koordinaten, eine für die yy-Koordinaten und eine für den Funktionswert f(x,y)f(x,y). Hilfreich ist hier die Funktion numpy.meshgrid mit der wir ein 2D-Tensorprodukt-Gitter aus 2 1D-Gittern erzeugen:

Eine mögliche Darstellung einer solchen Funktion wäre ein Contour-Plot, in welchem die Kurven {(x,y) ⁣:f(x,y)=ci}\{(x,y)\colon f(x,y)=c_i\} für verschiedene Werte c1<c2<…<clevelsc_1<c_2 < \ldots<c_{\text{levels}} eingezeichnet werden:

<Figure size 640x480 with 2 Axes>

Ähnlich funktionieren Color-Plots, bei denen der Funktionswert an einer Stelle (x,y)(x,y) dem Farbwert einer vordefinierten Farbpalette entspricht:

<Figure size 640x480 with 1 Axes>

Skalarfelder lassen sich auch in dreidimensionalen Koordinatensystemen darstellen. Die Argumente werden auf xx- und yy-Achse aufgetragen, und der Funktionswert auf die zz-Achse. Die entsprechenden Plot-Befehle sind allerdings nicht im Submodul matplotlib.pyplot definiert, daher müssen wir einen Umweg nehmen. Zunächst erzeugen wir uns ein Bildobjekt mit

fig = plt.figure()

fügen ein 3D-Koordinatensystem hinzu

ax = fig.axes(projection='3d')

und nutzen die vom Objekt ax bereitgestellten Plot-Befehle. Hier ein Beispiel:

<Figure size 800x600 with 1 Axes>
<Figure size 800x600 with 1 Axes>

Schauen wir uns noch eine Methode mit der wir Vektorfelder zeichnen können. Als Beispiel definieren wir f⃗(x,y)=(−y,x)⊤\vec f(x,y) = (-y,x)^\top. Solche Vektorfelder können in sogenannten Quiver-Plots dargestellt werden:

<Figure size 640x480 with 1 Axes>

Auch Kurven lassen sich in Matplotlib zeichnen. Eine Kurve ist zunächst eine Menge an Punkten

Γ={x⃗(t)∈Rn ⁣:t∈[ta,tb]}\Gamma = \{\vec x(t)\in \mathbb R^n\colon t\in[t_a,t_b]\}

mit einer sogenannten Kurvenparametrisierung x⃗ ⁣:[ta,tb]→Rn\vec x\colon[t_a,t_b]\to\mathbb{R}^n, welche regulär ist, d.h., x⃗˙(t)≠0\dot{\vec x}(t)\ne 0 für alle t∈[ta,tb]t\in [t_a,t_b]. Für eine ebene Kurve (n=2n=2) können wir den normalen Plot-Befehl nutzen. Das Kleeblatt

Γ={(cos⁡(t)+cos⁡(2t)sin⁡(t)−sin⁡(2t)) ⁣:t∈[0,2π]}\Gamma = \{\begin{pmatrix}\cos(t)+\cos(2t) \\ \sin(t)-\sin(2t)\end{pmatrix}\colon t\in [0,2\pi]\}

zeichnen wir beispielsweise mit

<Figure size 640x480 with 1 Axes>

Ähnlich kann man Raumkurven (n=3n=3) zeichnen, man benötigt nur vorher ein dreidimensionales Koordinatensystem. Wie wir das anlegen haben wir aber schon gesehen. Wir zeichnen hier die Schraubenlinie

Γ={(cos⁡(t)sin⁡(t)t) ⁣:t∈[0,4π]}.\Gamma = \{\begin{pmatrix}\cos(t)\\ \sin(t) \\ t\end{pmatrix}\colon t\in [0,4\pi]\}.
<Figure size 640x480 with 1 Axes>