Histórico #

Observação

O seguinte texto introdutório foi escrito em 2008 por John D. Hunter (1968-2012), o autor original do Matplotlib.

Matplotlib é uma biblioteca para fazer gráficos 2D de arrays em Python . Embora tenha sua origem na emulação dos comandos gráficos do MATLAB, é independente do MATLAB, podendo ser utilizado de forma Pythonica, orientada a objetos. Embora Matplotlib seja escrito principalmente em Python puro, ele faz uso intenso de NumPy e outro código de extensão para fornecer bom desempenho mesmo para grandes matrizes.

O Matplotlib foi projetado com a filosofia de que você deve ser capaz de criar gráficos simples com apenas alguns comandos, ou apenas um! Se você quiser ver um histograma de seus dados, não precisará instanciar objetos, chamar métodos, definir propriedades e assim por diante; deve funcionar.

Durante anos, usei o MATLAB exclusivamente para análise e visualização de dados. O MATLAB se destaca em facilitar gráficos bonitos. Quando comecei a trabalhar com dados de EEG, descobri que precisava escrever aplicativos para interagir com meus dados e desenvolvi um aplicativo de análise de EEG no MATLAB. À medida que o aplicativo crescia em complexidade, interagindo com bancos de dados, servidores http, manipulando estruturas de dados complexas, comecei a lutar contra as limitações do MATLAB como linguagem de programação e decidi recomeçar em Python. O Python mais do que compensa todas as deficiências do MATLAB como linguagem de programação, mas estava tendo dificuldade em encontrar um pacote de plotagem 2D (para 3D VTK mais do que excede todas as minhas necessidades).

Quando fui procurar um pacote de plotagem Python, tive vários requisitos:

  • Os gráficos devem ter uma ótima aparência - qualidade de publicação. Um requisito importante para mim é que o texto tenha uma boa aparência (sem serrilhado, etc.)

  • Saída Postscript para inclusão com documentos TeX

  • Incorporável em uma interface gráfica do usuário para desenvolvimento de aplicativos

  • O código deve ser fácil o suficiente para que eu possa entendê-lo e estendê-lo

  • Fazer plotagens deve ser fácil

Não encontrando nenhum pacote adequado para mim, fiz o que qualquer programador Python que se preze faria: arregacei as mangas e mergulhei de cabeça. faz muito bem. Isso teve a vantagem adicional de que muitas pessoas têm muita experiência em MATLAB e, portanto, podem rapidamente começar a plotar a vapor em python. Do ponto de vista do desenvolvedor, ter uma interface de usuário fixa (a interface pylab) tem sido muito útil, porque a essência da base de código pode ser reprojetada sem afetar o código do usuário.

O código Matplotlib é conceitualmente dividido em três partes: a interface pylab é o conjunto de funções fornecidas pylabque permitem ao usuário criar gráficos com código bastante semelhante ao código de geração de figura MATLAB ( tutorial Pyplot ). O frontend Matplotlib ou API Matplotlib é o conjunto de classes que fazem o trabalho pesado, criando e gerenciando figuras, texto, linhas, plotagens e assim por diante ( Tutorial do artista ). Esta é uma interface abstrata que não sabe nada sobre a saída. Os back- ends são dispositivos de desenho dependentes de dispositivo, também conhecidos como renderizadores, que transformam a representação do front-end em uma cópia impressa ou em um dispositivo de exibição ( O que é um back-end?). Backends de exemplo: PS cria cópia impressa PostScript® , SVG cria cópia impressa de gráficos vetoriais escaláveis , Agg cria saída PNG usando a biblioteca Anti-Grain Geometry de alta qualidade fornecida com Matplotlib, GTK incorpora Matplotlib em um aplicativo Gtk+ , GTKAgg usa o renderizador Anti-Grain para criar uma figura e incorporá-la em um aplicativo Gtk+, e assim por diante para PDF , WxWidgets , Tkinter , etc.

Matplotlib é usado por muitas pessoas em muitos contextos diferentes. Algumas pessoas desejam gerar automaticamente arquivos PostScript para enviar a uma impressora ou editora. Outros implantam o Matplotlib em um servidor de aplicativos da web para gerar saída PNG para inclusão em páginas da web geradas dinamicamente. Alguns usam o Matplotlib interativamente a partir do shell Python no Tkinter no Windows. Meu uso principal é incorporar o Matplotlib em um aplicativo Gtk+ EEG que roda em Windows, Linux e Macintosh OS X.


Logotipo original do Matplotlib (2003 -- 2008).

( Código fonte , png )

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

Logotipo Matplotlib (2008 - 2015).

( Código fonte , png )

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