Matplotlib und Jupyter Notebooks¶
Notizen¶
Matplotlib ist ein umfangreiches und mächtiges Programmpaket zum Plotten von Daten. In den meisten Python-Distributionen, die für den Einsatz in der Wissenschaft konzipiert sind, ist es bereits enthalten. Die offizielle Dokumentation finden Sie hier, und ein gutes Tutorial mit Übungen zum Nachmachen hier.
Ebenfalls nützlich sind die neuen Tutorials auf der Matplotlib-Webseite sowie die Galerie von Beispiel-Plots, in der man für jede Beispielgrafik den Quelltext abrufen kann, mit dem sie erzeugt wurde. Das macht die Modifikation für die eigenen Bedürfnisse einfach.
Anfangs kann es verwirrend sein, dass Matplotlib verschiedene Möglichkeiten der Benutzung bietet, eine objektorientierte, in der die Figures (Abbildungen) und Axes (=Achsenpaare bzw. Diagramme) benannte Objekte sind, und eine zweite, bewusst an MATLAB angelehnte Kommandoversion. Der folgende Artikel beschreibt die Unterschiede: plt.xxx() or ax.xxx(), That is the Question in Matplotlib
Graphen können in einem Python-Skript z.B. direkt nach der numerischen Bearbeitung von Daten automatisch generiert werden. Das folgende Skript generiert einen Plot mit zwei Graphen und modifiziert einige der default-Eigenschaften.
1# Standard-Einbindung der Matplotlib-Funktionen unter der Bezeichnung 'plt' 2import matplotlib.pyplot as plt 3import numpy as np 4 5# Generierung der "Leinwand", auf der die Plots gezeichnet werden, Ausdehnung 6# in Zoll, Aufloesung in dpi, Dots per Inch 7fig = plt.figure(figsize=(8, 6), dpi=80) 8 9# Create a new subplot from a grid of 1x1 10ax = fig.add_subplot(1, 1, 1) 11 12# x-Werte fuer die beiden Beispielplots als eindimensionales numpy-Array 13# generieren 14X = np.linspace(-2*np.pi, 2*np.pi, 265, endpoint=True) 15# Und die y-Werte dazu 16C, S = np.cos(X), np.sin(X) 17 18# Plotte den Kosinus als blaue, durchgezogene Linie mit Breite 1 Pixel 19ax.plot(X, C, color="blue", linewidth=2.5, linestyle="--") # erster Graph 20 21# Plotte den Sinus als grüne, durchgezogene Line mit Breite 1 Pixel 22ax.plot(X, S, color="green", linewidth=1.0, linestyle="-") # zweiter Graph 23 24# Definition einer ausgefuellten Flaeche zwischen den Graphen 25ax.fill_between(C, S, where=C > S, facecolor="green") 26 27# Modifikation der Plot-Umrandung, Verschiebung der Achsen in die Plot-Mitte 28ax.spines['right'].set_color('none') 29ax.spines['top'].set_color('none') 30ax.spines['bottom'].set_position(('data', 0)) 31ax.xaxis.set_ticks_position('bottom') 32ax.spines['left'].set_position(('data', 0)) 33ax.yaxis.set_ticks_position('left') 34 35# Setze die Limits der x-Achse 36ax.set_xlim(X.min() * 1.1, X.max() * 1.1) 37 38# Setze die x-Achsen-Markierungen 39# Beschriftung mit LaTeX-Syntax moeglich! 40ax.set_xticks([-np.pi, -np.pi / 2, 0, np.pi / 2, np.pi]) 41ax.set_xticklabels([r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$']) 42 43# y-Limits 44ax.set_ylim(C.min() * 1.1, C.max() * 1.1) 45 46# y-Markierungen 47ax.set_yticks(np.linspace(-1, 1, 5, endpoint=True)) 48 49# Zeige den fertigen Plot auf dem Desktop 50plt.show() 51 52# Abspeichern mit 53# plt.savefig('test.png')
Sehr ausführlich und mit vielen teilweise recht komplexen Beispielen ist das Buch von Nicholas Rougier „Scientific Visualization: Python + Matplotlib“.
Eine andere Möglichkeit zur Interaktion mit Python, die sich insbesondere in der wissenschaftlichen Community viel verwendet wird, besteht in den sog. Jupyter Notebooks. Auch diese Möglichkeit ist mit Anaconda vorinstalliert. Jupyter Notebooks bieten eine einfache Möglichkeit, eine interaktive Python-Sitzung inklusive der erzeugten Ausgaben und eventueller Kommentare abzuspeichern und auszutauschen. Der Aufruf von Jupyter in der Windows-Eingabeaufforderung erfolgt durch die Eingabe von jupyter notebook. Daraufhin öffnet sich ein Browserfenster, von dem aus eine ipynb-Datei eingelesen oder eine neue erstellt werden kann.
das erste Test-Notebook aus der Vorlesung
Eine hervorragende Informationsquelle für die Verwendung von Python, IPython und insbesondere Jupyter im wissenschaftlichen Kontext ist das Python Data Science Handbook von Jake VanderPlas. Der komplette Inhalt des Buches steht auch als eine Kollektion von Jupyter-Notebooks zur Verfügung, die Sie hier online lesen und unter diesem Link auch für die interaktive Beschäftigung herunterladen können (Knopf rechts oben „Clone or Download“, dann „Download ZIP“).
Aufgaben bis zum nächsten Mal¶
Bonus: Versuchen Sie, mit Matplotlib die folgende Grafik zu erzeugen. Sie können das Ergebnis als Bonusaufgabe mit dem File-Namen loesung_b4_matplotlib_Matrikelnummer.py in ihren pythonanywhere-Account hochladen. (Frist bis Ende der Vorlesungszeit, 16.02.2025)