Datenvisualisierung mit¶
-Um mit Matplotlib arbeiten zu können, muss die Bibliothek erst einmal importiert werden.
-Damit wir nicht so viel tippen müssen, geben wir ihr den kürzeren Namen plt
.
from IPython.display import Image
-
-import matplotlib.pyplot as plt
-
-plt.rcParams["figure.figsize"] = (10, 8)
-plt.rcParams["font.size"] = 16
-plt.rcParams["lines.linewidth"] = 2
-
Außerdem brauchen wir der Einfachheit halber ein paar Funktionen aus numpy
, die dir schon bekannt vorkommen sollten.
import numpy as np
-
-x = np.linspace(0, 1) # gibt 50 Zahlen in gleichmäßigem Abstand von 0–1
-
Zu erst ein einfaches Beispiel mit $f(x)=x^2$.
-Um den Text-Output in diesem Notebook zu unterdrücken, schreiben wir manchmal ein ;
hinter die letzte Zeile.
Im Folgenden verwenden wir die objekt-orientierte Schreibweise von matplotlib
, die mehr Möglichkeiten und Freiheiten bietet.
-Diese rufst du mit
fig, ax = plt.subplots()
-
-ax.plot(x, x**2);
-
auf.
-Du hast dann ein Objekt figure fig
und ein Objekt axes ax
, mit denen du interagieren und die Einstellungen im plot vornehmen kannst.
Das Objekt figure
ist dabei die gesamte Abbildung, auf der sich Axen, labels und Text befinden können.
-Die einzelnen axes
Objekte sind die jeweiligen Koordinatensysteme, in die man die entsprechenden Daten plottet.
-Mit diesen können auch Informationen über die Einheiten und Darstellung mit den Achsen definiert werden.
Anderes Beispiel: $\sin(t)$ mit verschiedenen Stilen. Vorsicht, die Funktionen und $\pi$ sind Bestandteil von numpy
.
t = np.linspace(0, 2 * np.pi)
-
-fig, ax = plt.subplots()
-ax.plot(t, np.sin(t));
-
fig2, ax2 = plt.subplots()
-ax2.plot(t, np.sin(t), "r--");
-
ax.cla()
-ax.plot(t, np.sin(t), "go")
-fig
-
Tabelle mit einigen Farben und Stilen: matplotlib.axes.Axes.plot
-Tabellen mit allen Farben und Stilen:
--
-
- Marker -
- Linienstile -
- Farben -
Der Vorteil ist nun, dass du z.B. mehrere Objekte fig
und ax
parallel benutzen und nachträglich wieder auf das vorherige zugreifen kannst.
Du kannst so auch im Nachhinein noch Dinge verändern und trotzdem die andere figure
unverändert lassen.
fig
-
Neue Grenzen mit set_xlim(a, b)
und set_ylim(a, b)
ax.set_xlim(0, 2 * np.pi)
-ax.set_ylim(-1.2, 1.2)
-fig
-
fig2
-
Es fehlt noch etwas...¶
-# https://imgs.xkcd.com/comics/convincing.png
-Image(filename="images/xkcd-convincing.png")
-
with plt.xkcd():
- fig, ax = plt.subplots()
-
- ax.set_title("Axes with labels")
- ax.plot(t, np.sin(t))
- ax.set_xlabel("t / s")
- ax.set_ylabel("U / V")
- ax.set_ylim(-1.1, 1.1)
- ax.set_xlim(0, 2 * np.pi);
-