Historia #

Nota

El siguiente texto introductorio fue escrito en 2008 por John D. Hunter (1968-2012), el autor original de Matplotlib.

Matplotlib es una biblioteca para hacer gráficos 2D de matrices en Python . Aunque tiene su origen en la emulación de los comandos de gráficos de MATLAB, es independiente de MATLAB y se puede utilizar de forma Pythonic, orientada a objetos. Aunque Matplotlib está escrito principalmente en Python puro, hace un uso intensivo de NumPy y otros códigos de extensión para proporcionar un buen rendimiento incluso para arreglos grandes.

Matplotlib está diseñado con la filosofía de que debería poder crear gráficos simples con solo unos pocos comandos, ¡o solo uno! Si desea ver un histograma de sus datos, no debería necesitar instanciar objetos, llamar a métodos, establecer propiedades, etc.; debería funcionar.

Durante años, solía utilizar MATLAB exclusivamente para el análisis y la visualización de datos. MATLAB se destaca por hacer que las gráficas de apariencia agradable sean fáciles. Cuando comencé a trabajar con datos de EEG, descubrí que necesitaba escribir aplicaciones para interactuar con mis datos y desarrollé una aplicación de análisis de EEG en MATLAB. A medida que la aplicación creció en complejidad, interactuando con bases de datos, servidores http, manipulando estructuras de datos complejas, comencé a esforzarme contra las limitaciones de MATLAB como lenguaje de programación y decidí comenzar de nuevo en Python. Python compensa con creces todas las deficiencias de MATLAB como lenguaje de programación, pero tenía dificultades para encontrar un paquete de trazado 2D (para 3D VTK supera con creces todas mis necesidades).

Cuando fui a buscar un paquete de trazado de Python, tenía varios requisitos:

  • Las tramas deben verse geniales: calidad de publicación. Un requisito importante para mí es que el texto se vea bien (antialiasing, etc.)

  • Salida Postscript para inclusión con documentos TeX

  • Integrable en una interfaz gráfica de usuario para el desarrollo de aplicaciones

  • El código debe ser lo suficientemente fácil como para que pueda entenderlo y extenderlo.

  • Hacer tramas debería ser fácil

Al no encontrar ningún paquete que se adaptara a mí, hice lo que haría cualquier programador de Python que se precie: me arremangué y me sumergí. Como no tenía ninguna experiencia real con gráficos por computadora, decidí emular las capacidades de trazado de MATLAB porque eso es algo que MATLAB hace muy bien Esto tenía la ventaja adicional de que muchas personas tienen mucha experiencia en MATLAB y, por lo tanto, pueden ponerse rápidamente al día con el trazado de gráficos en python. Desde la perspectiva de un desarrollador, tener una interfaz de usuario fija (la interfaz pylab) ha sido muy útil, porque las entrañas del código base se pueden rediseñar sin afectar el código de usuario.

El código de Matplotlib se divide conceptualmente en tres partes: la interfaz de pylab es el conjunto de funciones proporcionadas por pylablas cuales el usuario puede crear gráficos con un código bastante similar al código de generación de figuras de MATLAB ( tutorial de Pyplot ). La interfaz de Matplotlib o Matplotlib API es el conjunto de clases que hacen el trabajo pesado, creando y administrando figuras, texto, líneas, gráficos, etc. ( Tutorial de artista ). Esta es una interfaz abstracta que no sabe nada sobre la salida. Los backends son dispositivos de dibujo dependientes del dispositivo, también conocidos como renderizadores, que transforman la representación del frontend en una copia impresa o en un dispositivo de visualización ( ¿Qué es un backend?). Backends de ejemplo: PS crea una copia impresa de PostScript® , SVG crea una copia impresa de gráficos vectoriales escalables , Agg crea una salida PNG usando la biblioteca de geometría Anti-Grain de alta calidad que se envía con Matplotlib, GTK incorpora Matplotlib en una aplicación Gtk+ , GTKAgg usa el renderizador Anti-Grain para crear una figura e incrustarla en una aplicación Gtk+, y así sucesivamente para PDF , WxWidgets , Tkinter , etc.

Matplotlib es utilizado por muchas personas en muchos contextos diferentes. Algunas personas quieren generar automáticamente archivos PostScript para enviar a una imprenta o editores. Otros implementan Matplotlib en un servidor de aplicaciones web para generar una salida PNG para su inclusión en páginas web generadas dinámicamente. Algunos usan Matplotlib de forma interactiva desde el shell de Python en Tkinter en Windows. Mi uso principal es integrar Matplotlib en una aplicación Gtk+ EEG que se ejecuta en Windows, Linux y Macintosh OS X.


Logotipo original de Matplotlib (2003 -- 2008).

( Código fuente , png )

../../_images/historia-1.png

Logotipo de Matplotlib (2008 - 2015).

( Código fuente , png )

../../_images/historia-2.png