Matplotlib: o guia inicial!

Faça parte da comunidade!

Matplotlib é um Módulo Python que serve pra gerar gráficos de maneira simples, mas, apesar de ser uma biblioteca compacta, o processo de fazer a plotagem do gráfico parece ser um processo de tentativa e erro e requer uma habilidade de 98% da biblioteca, o que pode ser assustador.

Este artigo é um processo passo a passo de nível iniciante ao intermediário no matplotlib que traz a teoria com exemplos. Embora possa ser muito bom aprender por meio de exemplos, vale ressaltar que isso apenas nos ajuda a entender de maneira superficial os trabalhos da biblioteca e os seus layouts.

Este artigo assume que o usuário conhece um pouco de Numpy. Vamos usar principalmente o módulo numpy.random para gerar dados, desenhando amostras de distribuições estatísticas diferentes.

Por Que o Matplotlib Pode Ter um Processo Bem Confuso?

Aprender Matplotlib pode ser frustrante as vezes. O problema não é que a sua documentação seja deficiente: A sua documentação é muito extensa atualmente (para se ter uma ideia pode verificar o tamanho da documentação deste módulo clicando aqui). Mas as seguintes questões causam alguns desafios:

  • A sua biblioteca é enorme, algo em torno de 70 mil linhas de código no total;
  • É origem de várias interfaces distintas (maneiras de se construir uma figura) e capaz de interagir com vários bancos de dados. (Banco de dados lidam com o processo de como os gráficos são renderizados, não apenas estruturados internamente;
  • Embora ele seja compreensível, algumas de suas documentações públicas estão seriamente desatualizados. A biblioteca ainda está evoluindo, e muitos outros exemplos podem estar em torno de 70% de menos linhas do que em sua versão moderna.

Pylab: O que é, e por que devemos usar?

Vamos começar com um pouco de história: John D. Hunter, um neurobiologista, começou desenvolver o matplotlib por volta de 2003, inspirado originalmente para emular comandos do software MATLAB. Jhon morreu jovem de maneira trágica aos 44, em 2012, e o matplotlib agora é um esforço comunitário completo, desenvolvido e mantendo pela comunidade open-source.

Um recurso relevante do MATLAB é o seu estilo global. O conceito de importação do Python não é dificilmente usado no MATLAB, e a maioria das funções do MATLAB estão disponíveis para usuários de alto nível.

Sabendo que o matplotlib tem suas raízes no MATLAB nos ajuda a explicar por que o pylab existe. Pylab é um módulo dentro da biblioteca do matplotlib que foi construído para imitar o estilo global do MATLAB. Ele existe somente para trazer um número de funções e classes do NumPy e matplotlib, , fazendo uma transição fácil para os antigos usuários do MATLAB que não estavam acostumados de precisar de instruções de importação.

Os usuários do Matlab gostaram dessa ideia, , porque com a importação pylab*, eles podem simplesmente chamar diretamente de plot() ou array(), como eles faziam no MATLAB.

A edição pode parecer evidente para alguns usuários de Python: usando from pylab import * em uma sessão ou script pode parecer uma má prática. Agora, o Matplotlib atualmente avisa contra isso em seu próprios tutoriais.

“Por razões históricas o [pylab] ainda existe, mas fica advertido não usar. Isso polui os namespaces com funções que vão esconder certas built-ins e pode levar a bugs difícil de serem rastreados. Para fazer a integração IPyton sem importações, é preferível usar da mágica %matplotilib.” (Se quiser ler a fonte dessa citação está disponivel em inglês aqui).

Internamente, existe um tom potencialmente conflitante ao importar sendo mascarado com a fonte pylab. De fato, usando ipython—pylab (a partir do terminal/linha de comando ou %pylab (a partir das ferramentas IPytho/Jupyter) simplesmente chamando from pylab import* sob o capuz.

A linha de botão do matplotlib foi abandonado pelo seu módulo conveniente e agora a explicita recomendação de não se usar pylab, trazendo umas das noções chaves em Python: É melhor ser explicito do que implícito.

Não precisando do pylab, podemos fazer uma simples importação canônica:

>>>import matplotlib.pyplot as plt

Enquanto fazemos isso, vamos importar também o NumPy, que vamos usar para gerar depois um dado, e chamamos np.random.seed() para fazer exemplos com (pseudo) random data reproducible:

>>> import numpy as np
>>> np.random.seed(444)

A Hierarquia de Objetos do Matplotlib

Um conceito muito importante no matplotlib é o seu objeto hierárquico.

Se você ver por qualquer tutorial do matplotlib, provavelmente viu algo chamado plt.plot([1,2,3]). Essa linha esconde o fato de que o plot é realmente uma hierarquia aninhado dos objetos Python. “Hierarquia” significa que existe uma árvore como uma estrutura dos objetos matplotlib sob escrevem a cada plot.

O objeto figure é o receptáculo mais externo da figura, que poder conter múltiplos objetos Axes. Um nome é uma fonte de confusão: um Axes traduz o que pensamos como um plot individual ou gráfica (mais do que o plural de “axis”, como esperamos).

Você pode pensar que o objeto figure é como um container box contendo um ou mais Axes (plots atuais). Abaixo dos axes na hierarquia estão os pequenos objetos que são as marcas de escala, linhas individuais, legendas, e textos em boxe. Quase todo “elemento” do gráfico pode ser manipulado com objeto Python, de toda forma de tick e label:



Aqui está uma ilustração da hierarquia em ação
>>>figure, _ =plt.subplots
>>>type(fig)
<class 'matplotlib.figure.Figure'>

Na figura acima, criamos duas variáveis com pl.subplots(). O primeiro é o objeto figure. O segundo é o variável “throwaway” que não temos ainda, denotado com um sublinhado. Usando essa notação atribuída, é fácil percorrer a hierarquia da figura e veja a primeira marca do eixo y do primeiro objeto Axes.

O Matplotlib apresenta essa figura anatômica, mais do que a da hierarquia explícita:


(No verdadeiro estilo matplotlib, é criada a figura acima, nos documentos contidos no matplotlib.)

Isso é o Básico acerca deste módulo se quiser se aprofundar mais, recomendo esse vídeo do canal Programação Dinâmica no You Tube, vale a pena dar uma conferida:

*Obs: Esse artigo foi adaptado a partir de um artigo publicado em inglês e teve uma parte traduzida (para acessar, clique aqui).

Passe adiante...!

Compartilhar no facebook
Compartilhar no linkedin
Compartilhar no twitter
Compartilhar no email
Compartilhar no whatsapp

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

12 − 2 =

Receba em seu email o acesso as aulas e materiais

Vá além:

Matplotlib: o guia inicial!

Matplotlib é um Módulo Python que serve pra gerar gráficos de maneira simples, mas, apesar de ser uma biblioteca compacta, o processo de fazer a