Storia #

Nota

Il seguente testo introduttivo è stato scritto nel 2008 da John D. Hunter (1968-2012), l'autore originale di Matplotlib.

Matplotlib è una libreria per creare grafici 2D di array in Python . Sebbene abbia le sue origini nell'emulazione dei comandi grafici MATLAB, è indipendente da MATLAB e può essere utilizzato in modo Pythonic, orientato agli oggetti. Sebbene Matplotlib sia scritto principalmente in puro Python, fa un uso massiccio di NumPy e altro codice di estensione per fornire buone prestazioni anche per array di grandi dimensioni.

Matplotlib è progettato con la filosofia che dovresti essere in grado di creare grafici semplici con pochi comandi o solo uno! Se vuoi vedere un istogramma dei tuoi dati, non dovresti aver bisogno di istanziare oggetti, chiamare metodi, impostare proprietà e così via; dovrebbe funzionare.

Per anni ho utilizzato MATLAB esclusivamente per l'analisi e la visualizzazione dei dati. MATLAB eccelle nel rendere facili i grafici di bell'aspetto. Quando ho iniziato a lavorare con i dati EEG, ho scoperto che avevo bisogno di scrivere applicazioni per interagire con i miei dati e ho sviluppato un'applicazione di analisi EEG in MATLAB. Man mano che l'applicazione cresceva in complessità, interagendo con database, server http, manipolando complesse strutture di dati, ho iniziato a sforzarmi contro i limiti di MATLAB come linguaggio di programmazione e ho deciso di ricominciare da capo con Python. Python ha più che compensato tutte le carenze di MATLAB come linguaggio di programmazione, ma avevo difficoltà a trovare un pacchetto di plottaggio 2D (per 3D VTK ha più che superato tutte le mie esigenze).

Quando sono andato alla ricerca di un pacchetto di plottaggio Python, avevo diversi requisiti:

  • Le trame dovrebbero avere un bell'aspetto: qualità della pubblicazione. Un requisito importante per me è che il testo abbia un bell'aspetto (antialias, ecc.)

  • Output Postscript da includere nei documenti TeX

  • Incorporabile in un'interfaccia utente grafica per lo sviluppo di applicazioni

  • Il codice dovrebbe essere abbastanza semplice da poterlo comprendere ed estendere

  • Fare trame dovrebbe essere facile

Non trovando alcun pacchetto adatto a me, ho fatto quello che farebbe qualsiasi programmatore Python che si rispetti: mi sono rimboccato le maniche e mi sono tuffato. fa molto bene. Ciò ha avuto l'ulteriore vantaggio che molte persone hanno molta esperienza con MATLAB e quindi possono iniziare rapidamente a tracciare a vapore in Python. Dal punto di vista di uno sviluppatore, avere un'interfaccia utente fissa (l'interfaccia pylab) è stato molto utile, perché le viscere della base di codice possono essere riprogettate senza influire sul codice utente.

Il codice Matplotlib è concettualmente diviso in tre parti: l' interfaccia pylab è l'insieme di funzioni fornite da pylabche permettono all'utente di creare grafici con codice abbastanza simile al codice generatore di figure MATLAB ( tutorial Pyplot ). Il frontend Matplotlib o Matplotlib API è l'insieme di classi che svolgono il lavoro pesante, creando e gestendo figure, testo, linee, grafici e così via ( Tutorial dell'artista ). Questa è un'interfaccia astratta che non sa nulla dell'output. I backend sono dispositivi di disegno dipendenti dal dispositivo, noti anche come renderer, che trasformano la rappresentazione del frontend in una copia cartacea o in un dispositivo di visualizzazione ( Che cos'è un backend?). Backend di esempio: PS crea una copia cartacea PostScript® , SVG crea una copia cartacea della grafica vettoriale scalabile , Agg crea un output PNG utilizzando la libreria Anti-Grain Geometry di alta qualità fornita con Matplotlib, GTK incorpora Matplotlib in un'applicazione Gtk+ , GTKAgg utilizza il renderer Anti-Grain per crea una figura e incorporala in un'applicazione Gtk+, e così via per PDF , WxWidgets , Tkinter , ecc.

Matplotlib è utilizzato da molte persone in molti contesti diversi. Alcune persone desiderano generare automaticamente file PostScript da inviare a uno stampatore o a un editore. Altri distribuiscono Matplotlib su un server di applicazioni Web per generare output PNG da includere in pagine Web generate dinamicamente. Alcuni usano Matplotlib in modo interattivo dalla shell Python in Tkinter su Windows. Il mio utilizzo principale è incorporare Matplotlib in un'applicazione Gtk+ EEG che gira su Windows, Linux e Macintosh OS X.


Il logo originale di Matplotlib (2003-2008).

( Codice sorgente , png )

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

Logo Matplotlib (2008 - 2015).

( Codice sorgente , png )

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