Como funciona a biblioteca Matplotlib?

Vinicius Hora
Data Hackers
Published in
4 min readJul 20, 2023
Photo by Kelly Sikkema on Unsplash

Quando falamos de dados, os gráficos são os primeiros que aparecem em nossa mente. Sendo assim, é inegável que as ferramentas que utilizamos para a construção destes é a nossa principal aliada durante o processo de storytelling.

A partir de toda essa necessidade, muito se discute sobre as limitações da biblioteca Matplotlib e alguns até dizem que ela é muito ultrapassada e limitada, buscando por alternativas mais recentes, porém menos consolidadas.

Mas você realmente conhece como funciona a lógica por de trás dessa ferramenta tão utilizada pelos cientistas de dados?

A biblioteca Matplotlib consiste em 3 principais camadas:

Elaboração própria do autor

Backend Layer

Essa camada é responsável por 3 principais funções dentro da biblioteca:

  • FigureCanvas: Cria e gerencia o espaço em que os gráficos serão desenhados (Quadro)
  • Renderer: É a responsável por desenhar as informações no quadro (Pincel)
  • Event: Utilizado para capturar interações do usuário com a figura, ou seja, detecta eventos a partir de cliques ou teclas e pode desencadear ações a partir disso.

O código abaixo nos permite entender um pouco melhor como funciona a interação do backend no matplotlib:

import numpy as np
import matplotlib.pyplot as plt

def on_press(event):
if event.inaxes is None: return
for line in event.inaxes.lines:
if event.key=='t':
visible = line.get_visible()
line.set_visible(not visible)
event.inaxes.figure.canvas.draw()

fig, ax = plt.subplots(1)

fig.canvas.mpl_connect('key_press_event', on_press)

ax.plot(np.random.rand(2, 20))

plt.show()
Elaboração própria do autor

Ao interagir com o gráfico apertando a tecla T o gráfico desaparece com as linhas, esse é só um dos exemplos do que a camada de Backend do Matplot lib pode realizar. Você pode utilizar isso para aprimorar ainda mais os seus gráficos e a experiência daqueles que acessam o seu código.

Artistic Layer

É a camada responsável por ditar o que o Backend Layer irá renderizar. Retornando a analogia que vinhamos seguindo, o Artistic Layer seria o pintor, que sabe as técnicas que utilizará e comandará o pincel.

Todas as partes dentro de uma Figure no matplotlib são componentes pertences a este layer, como: O título, as linhas, as imagens, os ticks labels, grid e tudo mais, absolutamente tudo que podemos visualizar dentro de uma Figure é considerado parte do Artistic Layer.

Esse layer é de extrema importância para as customizações dentro da biblioteca e por conta de seu pouco reconhecimento, muitos acreditam que a biblioteca é limitada em relação as customizações, porém essa ferramenta é extremamente poderosa, permitindo a customização de cada mínimo detalhe do seu gráfico.

Essa imagem nos mostra cada parte customizável do gráfico disponibilizada pela biblioteca.

Scripting Layer

Este é a camada mais utilizada, conhecida como matplotlib.pyplot, principalmente pelos cientistas de dados, devido a sua facilidade e simplicidade na linguagem de código. Esta é a camada responsável por integrar todos os layers anteriores de maneira simples.

import matplotlib.pyplot as plt

Com ela é possível plotar gráficos com uma simples linha de código. Contudo, esta funcionalidade é uma grande limitante das customizações e principal causa para a crença de que a biblioteca não cumpre os requisitos para a elaboração de gráficos mais complexos.

import matplotlib.pyplot as plt
import numpy as np

x = np.random.randn(10000)
plt.hist(x, 100)
plt.title(r'Normal distribution with $\mu=0, \sigma=1$')
plt.savefig('matplotlib_histogram.png')
plt.show()

Com pouquíssimas linhas, conseguimos ter uma visualização simples do gráfico que desejamos, o que é de extrema utilidade para uma análise inicial.

Referências:

https://realpython.com/python-matplotlib-guide/

--

--

Vinicius Hora
Data Hackers

Busco contribuir com o seu desenvolvimento pessoal e contribuir/auxiliar em projetos que façam a diferença no mundo 🚀💻