Como funciona a biblioteca Matplotlib?
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:
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()
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.