Login
Newsletter
Werbung

So, 22. November 2009, 00:00

Matplotlib und Pylab

Wissenschaftliche Grafiken unter Python

Wer als Schüler, Student, Ingenieur oder Wissenschaftler Datenreihen und mathematische Funktionen darstellen will und über elementare Python-Kenntnisse verfügt, der sollte sich diesen Artikel einmal genauer ansehen.

Vorwort

Am einfachsten lassen sich numerische Daten oder mathematische Funktionen mit einer Tabellenkalkulation darstellen. OpenOffice.org oder Gnumeric verfügen beispielsweise neben vielfältigen Manipulationsmöglichkeiten auch über ein Modul zur Visualisierung numerischer Daten. Allerdings sind die grafischen Möglichkeiten einer Tabellenkalkulation beschränkt. Eine äußerst professionelle Variante und namentlich im geowissenschaftlichen Betrieb weit verbreitet ist Matlab. Damit lassen sich selbst große Datenmengen aufbereiten, manipulieren und auf nahezu jede erdenkliche Weise darstellen. Der einzige Nachteil: Matlab ist sehr teuer! Ein freier Klon von Matlab ist Octave. Was Datenmanipulationsmöglichkeiten angeht, ist Octave über weite Bereiche ebenbürtig; deutlich schwächer sind die Grafikmöglichkeiten.

Hier springt Matplotlib ein. Matplotlib ist eine Unterprogrammsammlung für die weit verbreitete und freie Programmiersprache Python.

Den raschesten Zugang erhält man über das Interface Pylab, in dem in starker Annäherung an die Syntax von Matlab in der Programmiersprache Python Grafiken und Plots erzeugt werden können. Pylab ist ein prozeduraler Wrapper über viele Funktionen aus der Bibliothek pyplot, die objektorientiert konzipiert ist, aus Numpy, einer Python-Bibliothek für komplexe Rechenvorgänge, und aus matplotlib.mlab, einem Kompatibilitätsmodul zu Matlab. Will man pylab interaktiv bedienen, dann bietet sich die erweiterte Python-Shell an, die als ipython -pylab gestartet werden kann, und den interaktiven Aufruf der pylab-Befehle gestattet.

Installation der Bibliotheken

In den bekannten aktuellen Linux-Distributionen gehört Python zur Grundinstallation, zumindest lässt es sich rasch nachinstallieren. Zu beachten ist, dass Matplotlib nur mit dem älteren Sprachzweig Python 2.4 bis 2.7 zusammenarbeitet, jedoch noch nicht mit dem Re-Design der Sprache ab Python 3.0. Am einfachsten ist die Installation über die Standardrepositorien der Distributionen, z.B. mit Ubuntu 9.04:

sudo apt-get install python-matplotlib python-matplotlib-doc ipython

Damit werden alle Abhängigkeiten aufgelöst und eine hinreichend aktuelle Version installiert. Wer andere Wege einschlagen möchte, der sei auf die Homepages von Matplotlib und ipython verwiesen.

Ein Beispiel

Ein erstes Beispiel verdeutlicht den grundsätzlich einfachen Ansatz. Elementare Python-Kenntnisse werden dabei vorausgesetzt. Man starte zunächst die erweiterte Python-Shell in einer Konsole mit ipython -pylab. Damit wird automatisch das pylab-Modul geladen. Ziel ist es, eine einfache Sinus-Funktion zu plotten. Dazu gebe man in der Shell folgende Zeilen interaktiv ein:

x = arange(0,7,0.01);

Der Befehl definiert ein Array mit Werten von 0 bis 7 im Abstand von 0.1, wobei 7 gerade nicht mehr zum Array gehört. Die nächste Zeile sei

y = sin(x)

Damit wird ein Array mit den Sinus-Werten des Arrays x erzeugt. Die Eingabe von

plot(x,y)

öffnet ein Fenster mit dem Plot einer Sinus-Funktion auf Basis der oben erstellten Arrays x und y.

Sinus-Funktion im interaktiven Anzeigefenster, noch wenig hübsch

Dietmar Thaler

Sinus-Funktion im interaktiven Anzeigefenster, noch wenig hübsch

Die interaktive Eingabe ist in manchen Fällen schnell und praktisch. Für komplexere Grafiken empfiehlt sich aber die Speicherung der Befehle in einer Programm-Datei. Nachstehender Code produziert, mit einem Texteditor in die Datei »beispiel01.py« eingegeben, das gleiche Ergebnis wie die obige Konsoleneingabe:

#!/usr/bin/env python
# Beispiel 1: Plot der Sinusfunktion
import pylab as p # Import des Moduls pylab und Umbenennung zu p
x = p.arange(0,7,0.01)
y = p.sin(x) # Berechnung der y-Werte als Funktion von x
p.plot(x,y) # Erzeugung des Plots (im Speicher)
p.show() # Anzeige des Plots auf dem Schirm

Wenn man die Datei z. B. in einem Terminal mit chmod a+x beispiel01.py ausführbar macht, dann kann man sie mittels ./beispiel01.py starten.

Die Unterschiede zur interaktiven Eingabe sind gering. Die erste Zeile sorgt dafür, dass die Shell die Datei als ausführbares Python-Programm erkennt. Die nächste Code-Zeile

import pylab as p

importiert aus der Matplotlib jenes Modul, das in Syntax und Funktionalität größtmögliche Anlehnung an Matlab bringt, und benennt das Modul für die weitere Benutzung im folgenden Code schlicht in »p« um, um Schreibarbeit zu sparen. Alle weiteren pylab-Befehle müssen nun mit dem Präfix »p.« angegeben werden. Alternativ zu

x = p.arange(0,7,0.01)

kann die Funktion »linspace« verwendet werden:

x = p.linspace(0,7,700)

Damit werden von einschließlich 0 bis einschließlich 7 insgesamt 700 Datenpunkte erzeugt, die 699 Intervalle umfassen. Sowohl »arange« als auch »linspace« stammen ursprünglich aus der »numpy«-Bibliothek.

In Programmdateien plottet der »plot«-Befehl nur intern. Zur Darstellung auf dem Schirm ist

p.show()

erforderlich. Mit

p.savefig('beispiel01.png',format='png')

sichert man alternativ die Grafik im png-Format nach »beispiel01.png«. Darüber hinaus stehen noch weitere Formate wie z.B 'svg', 'ps' u.a. zur Verfügung.

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung