Geschichte#

Hinweis

Der folgende einführende Text wurde 2008 von John D. Hunter (1968-2012), dem ursprünglichen Autor von Matplotlib, verfasst.

Matplotlib ist eine Bibliothek zum Erstellen von 2D-Diagrammen von Arrays in Python. Obwohl es seine Ursprünge in der Emulation von MATLAB-Grafikbefehlen hat, ist es unabhängig von MATLAB und kann auf eine pythonische, objektorientierte Weise verwendet werden. Obwohl Matplotlib hauptsächlich in reinem Python geschrieben ist, nutzt es intensiv NumPy und anderen Erweiterungscode, um auch für große Arrays eine gute Leistung zu erzielen.

Matplotlib ist nach der Philosophie konzipiert, dass Sie einfache Diagramme mit nur wenigen Befehlen oder sogar nur einem erstellen können sollten! Wenn Sie ein Histogramm Ihrer Daten sehen möchten, sollten Sie keine Objekte instanziieren, Methoden aufrufen, Eigenschaften festlegen usw. müssen; es sollte einfach funktionieren.

Jahrelang habe ich ausschließlich MATLAB für Datenanalyse und Visualisierung verwendet. MATLAB ist hervorragend darin, einfach gut aussehende Diagramme zu erstellen. Als ich anfing, mit EEG-Daten zu arbeiten, stellte ich fest, dass ich Anwendungen schreiben musste, um mit meinen Daten zu interagieren, und entwickelte eine EEG-Anwendung in MATLAB. Als die Anwendung komplexer wurde, mit Datenbanken, HTTP-Servern, der Manipulation komplexer Datenstrukturen interagierte, begann ich, gegen die Grenzen von MATLAB als Programmiersprache anzukämpfen, und beschloss, in Python neu zu beginnen. Python gleicht alle Mängel von MATLAB als Programmiersprache mehr als aus, aber ich hatte Schwierigkeiten, ein 2D-Plotpaket zu finden (für 3D VTK übertrifft alle meine Bedürfnisse).

Als ich nach einem Python-Plotpaket suchte, hatte ich mehrere Anforderungen

  • Diagramme sollten großartig aussehen – Publikationsqualität. Eine wichtige Anforderung für mich ist, dass der Text gut aussieht (antialiased usw.)

  • Postscript-Ausgabe für die Einbindung in TeX-Dokumente

  • Einbettbar in eine grafische Benutzeroberfläche für die Anwendungsentwicklung

  • Der Code sollte einfach genug sein, dass ich ihn verstehen und erweitern kann

  • Das Erstellen von Diagrammen sollte einfach sein

Da ich kein Paket fand, das genau meinen Bedürfnissen entsprach, tat ich, was jeder selbst respektierende Python-Programmierer tun würde: Ich krempelte die Ärmel hoch und stürzte mich hinein. Ohne wirkliche Erfahrung mit Computergrafik beschloss ich, die Plotting-Fähigkeiten von MATLAB zu emulieren, da MATLAB dies sehr gut kann. Dies hatte den zusätzlichen Vorteil, dass viele Leute viel MATLAB-Erfahrung haben und sich daher schnell mit dem Plotten in Python vertraut machen können. Aus Entwicklersicht war eine feste Benutzeroberfläche (die pylab-Schnittstelle) sehr nützlich, da der Kern der Codebasis neu gestaltet werden kann, ohne den Benutzercode zu beeinträchtigen.

Der Matplotlib-Code ist konzeptionell in drei Teile unterteilt: Die pylab-Schnittstelle ist die Menge von Funktionen, die von pylab bereitgestellt werden und es dem Benutzer ermöglichen, Diagramme mit Code zu erstellen, der dem MATLAB-Code zur Diagrammerstellung sehr ähnlich ist (Pyplot-Tutorial). Das Matplotlib-Frontend oder die Matplotlib-API ist die Menge von Klassen, die die Hauptarbeit leisten, Figuren, Text, Linien, Diagramme usw. erstellen und verwalten (Artist-Tutorial). Dies ist eine abstrakte Schnittstelle, die nichts über die Ausgabe weiß. Die Backends sind geräteabhängige Zeichengeräte, auch Renderer genannt, die die Frontend-Darstellung in Hardcopy oder ein Ausgabegerät umwandeln (Was ist ein Backend?). Beispiel-Backends: PS erstellt PostScript®-Hardcopy, SVG erstellt Scalable Vector Graphics-Hardcopy, Agg erstellt PNG-Ausgabe mit der hochwertigen Anti-Grain Geometry-Bibliothek, die mit Matplotlib geliefert wird, GTK bettet Matplotlib in eine Gtk+-Anwendung ein, GTKAgg verwendet den Anti-Grain-Renderer, um eine Figur zu erstellen und sie in eine Gtk+ -Anwendung einzubetten, und so weiter für PDF, WxWidgets, Tkinter usw.

Matplotlib wird von vielen Menschen in vielen verschiedenen Kontexten verwendet. Einige Leute möchten automatisch PostScript-Dateien generieren, die sie an einen Drucker oder Verlage senden können. Andere setzen Matplotlib auf einem Webanwendungsserver ein, um PNG-Ausgaben für die Einbindung in dynamisch generierte Webseiten zu erstellen. Einige verwenden Matplotlib interaktiv von der Python-Shell in Tkinter unter Windows. Mein Hauptanwendungsfall ist die Einbettung von Matplotlib in eine Gtk+-EEG-Anwendung, die unter Windows, Linux und Macintosh OS X läuft.


Das ursprüngliche Logo von Matplotlib (2003 - 2008).

(Quellcode, 2x.png, png)

Matplotlib-Logo (2008 - 2015).

(Quellcode, 2x.png, png)