Geschichte #

Notiz

Der folgende Einführungstext wurde 2008 von John D. Hunter (1968-2012), dem ursprünglichen Autor von Matplotlib, geschrieben.

Matplotlib ist eine Bibliothek zum Erstellen von 2D-Plots von Arrays in Python . Obwohl es seinen Ursprung in der Emulation der MATLAB-Grafikbefehle 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, macht es intensiven Gebrauch von NumPy und anderem Erweiterungscode, um selbst für große Arrays eine gute Leistung zu bieten.

Matplotlib wurde mit der Philosophie entwickelt, dass Sie in der Lage sein sollten, einfache Diagramme mit nur wenigen Befehlen oder nur einem zu erstellen! Wenn Sie ein Histogramm Ihrer Daten sehen möchten, sollten Sie keine Objekte instanziieren, Methoden aufrufen, Eigenschaften festlegen und so weiter. es sollte einfach funktionieren.

Jahrelang habe ich MATLAB ausschließlich zur Datenanalyse und -visualisierung verwendet. MATLAB zeichnet sich dadurch aus, dass es einfach ist, schön 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-Analyseanwendung in MATLAB. Als die Anwendung immer komplexer wurde, mit Datenbanken und HTTP-Servern interagierte und komplexe Datenstrukturen manipulierte, begann ich mich gegen die Einschränkungen von MATLAB als Programmiersprache zu wehren und beschloss, mit Python neu anzufangen. Python gleicht alle Mängel von MATLAB als Programmiersprache mehr als aus, aber ich hatte Schwierigkeiten, ein 2D-Plotting-Paket zu finden (für 3D- VTK übertrifft es alle meine Anforderungen mehr als).

Als ich nach einem Python-Plotting-Paket suchte, hatte ich mehrere Anforderungen:

  • Plots sollten gut aussehen - Publikationsqualität. Eine wichtige Voraussetzung für mich ist, dass der Text gut aussieht (Antialiasing etc.)

  • Postscript-Ausgabe zur Aufnahme in TeX-Dokumente

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

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

  • Plots zu erstellen sollte einfach sein

Da ich kein Paket fand, das genau zu mir passte, tat ich, was jeder Python-Programmierer mit Selbstachtung tun würde: Ärmel hochkrempeln und eintauchen. Da ich keine wirkliche Erfahrung mit Computergrafik hatte, entschied ich mich, die Plot-Fähigkeiten von MATLAB zu emulieren, weil das etwas von MATLAB ist tut sehr gut. Dies hatte den zusätzlichen Vorteil, dass viele Leute viel MATLAB-Erfahrung haben und daher schnell mit dem Dampfplotten in Python beginnen können. Aus der Sicht eines Entwicklers war es sehr nützlich, eine feste Benutzeroberfläche (die Pylab-Oberfläche) zu haben, 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 der Satz von Funktionen, pylabdie es dem Benutzer ermöglichen, Diagramme mit Code zu erstellen, der dem Code zum Generieren von MATLAB-Figuren sehr ähnlich ist ( Pyplot-Tutorial ). Das Matplotlib-Frontend oder Matplotlib-API ist der Satz von Klassen, die die schwere Arbeit erledigen, Figuren, Text, Linien, Diagramme usw. erstellen und verwalten ( Künstler-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 eine Hardcopy oder ein Anzeigegerät umwandeln ( Was ist ein Backend?). Beispiel-Backends: PS erstellt PostScript® - Hardcopy, SVG erstellt Hardcopy Scalable Vector Graphics , Agg erstellt PNG-Ausgaben unter Verwendung der hochwertigen Anti-Grain-Geometrie- Bibliothek, die mit Matplotlib geliefert wird, GTK bettet Matplotlib in eine Gtk+ -Anwendung ein, GTKAgg verwendet den Anti-Grain-Renderer dazu eine Figur erstellen und in eine Gtk+-Anwendung einbetten usw. für PDF , WxWidgets , Tkinter usw.

Matplotlib wird von vielen Menschen in vielen verschiedenen Kontexten verwendet. Einige Leute möchten automatisch PostScript-Dateien generieren, um sie an einen Drucker oder Verleger zu senden. Andere setzen Matplotlib auf einem Webanwendungsserver ein, um eine PNG-Ausgabe zur Einbindung in dynamisch generierte Webseiten zu generieren. Einige verwenden Matplotlib interaktiv von der Python-Shell in Tkinter unter Windows. Meine Hauptanwendung besteht darin, Matplotlib in eine Gtk+ EEG-Anwendung einzubetten, die unter Windows, Linux und Macintosh OS X läuft.


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

( Quellcode , png )

../../_images/history-1.png

Matplotlib-Logo (2008 - 2015).

( Quellcode , png )

../../_images/history-2.png