Introdução
Matplotlib é uma das bibliotecas mais importantes de visualização de dados com Python, pois muitos outras bibliotecas de gráficos são baseadas nesta biblioteca. Por isso é tão importante aprendermos o seu funcionamento.
01.Hierarquia de objetos na biblioteca Matplotlib
Na biblioteca Matplotlib temos vários objetos e cada um possui a sua hierarquia. Começamos da parte mais externa para a parte mais interna desta hierarquia:
Figure: objeto mais externo e que comporta um ou vários Axes.Axes: objeto que de fato é o nosso gráfico (plot).Outros objetos: dentro do Axes (gráfico) temos inúmeros outros elementos como: títulos, legendas e etc:
02.Abordagens para construir um gráfico (plot) com Matplotlib
02.a.Abordagem direta (stateful)
Abordagem direta é a mais simples e porém a mais limitada, pois nos permite trabalhar com apenas uma figure e um axes de cada vez.
Esta aula já possui muitos conceitos e para não adicionar um conteúdo que não usaremos não irei explicar nada sobre a abordagem direta (stateful), mas comento apenas para falar que existe.
02.b.Abordagem orientada a objeto (stateless)
A abordagem orientada a objetos é um pouco mais complexa de entender no início, mas depois entenderemos os grandes benefícios como:
Grande possibilidade de opções de customizar os gráficos.
Facilitar o aprendizado de outras bibliotecas que aprenderemos no futuro, pois estas se baseiam no Matplotlib.
03.Construindo um gráfico com a abordagem orientada a objeto
Antes de começarmos o passo a passo para construirmos os gráficos, vamos importar a biblioteca Pandas e criar o nosso DataFrame. Faremos isso a partir de um dataset de os valores das ações na bolsa de valores e que pode ser encontrado no site do Yahoo! Finanças:
1#Importando a biblioteca Pandas e apelidando de pd
2import pandas as pd
1#Criando um DataFrame a partir do nosso Dataset
2df_totvs = pd.read_csv("/content/TOTS3.SA.csv")
1#Visualizando o DataFrame
2df_totvs.head()
Este é o resultado:
03.a.Importando a biblioteca Matplotlib
Para importar a biblioteca Matplotlib fazemos da seguinte forma:
1#Importando a biblioteca matplotlib e chamando de plt
2import matplotlib.pyplot as plt
Repare que após o nome da biblioteca matplotlib há o módulo pyplot que é a parte da biblioteca que trabalha para plotar gráficos com Python, dai o nome python + plot (pyplot)
03.b.Criando os objetos Figure e Axes
Lembrando que:
figureé o objeto de maior hierarquia (mais externo) na estrutura.axesé de fato o nosso gráfico (plot) e dentro de uma figure podemos ter um ou vários axes.
Para criarmos os objetos figure e axes usamos o método .subplots() do pyplot desta forma:
1fig, ax = plt.subplots()
Este é o resultado:
Warning
Repare que como não usamos nenhum parâmetro do método .subplots() por default (padrão) é criado apenas uma linha e uma coluna, ou seja, há espaço para apenas um axes.
03.c.Plotar um gráfico
Para plotar o gráfico usamos o método .plot do Pandas e depois alocamos este gráfico dentro do objeto ax (axes).
Desta forma:
01.Criar os objetos fig e ax.
1fig. ax_01 = plt.subplots()
02.Plotar o gráfico com o método .plot() a partir do nosso DataFrame (df) e armazená-lo dentro do objeto ax.
1df.nome_variavel.plot(ax=ax_01)
03.Veja o exemplo de plotar um gráfico:
1fig. ax_01 = plt.subplots()
1df.Close.plot(ax=ax_01)
Este é o resultado:
04.Customizando o gráfico
O gráfico é o próprio objeto ax_01 (axes) e por isso iremos trabalhar diretamente nele.
Estes são alguns comandos de customização:
.set_title()- para adicionar título ao gráfico..set_xlabel()- para adicionar nome do eixo x..set_ylabel()- para adicionar nome do eixo y.plt.show()- para mostrar o gráfico.
Note
Repare que mesmo sem este método plt.show() o gráfico é apresentado, mas isso ocorre pois o Jupyter Notebook já pressupõem que iremos apresentar o gráfico.
Porém, mais a diante quando não estivermos usando mais o Jupyter Notebook precisaremos deste método para poder mostrar o gráfico.
04.a.Veja o exemplo de como customizar o gráfico
1#Criando os objetos figure (fig) e axes (ax_01) com o método subplots()
2fig, ax_01 = plt.subplots()
1#Plotar o gráfico a partir do DataFrame e alocá-lo no objeto ax_01 (axes)
2df.Close.plot(ax=ax_01)
1#Adicionando título ao gráfico
2ax_01.set_title("Ações da TOTVS")
1#Adicionando nome ao eixo x
2ax_01.set_xlabel("Tempo")
1#Adicionando nome ao eixo y
2ax_01.set_ylabel("Preço")
Este é o resultado:
05.Construindo uma figure com dois axes.
Veremos agora como construir uma figure com dois axes, ou seja, dois gráficos:
1#Criando um segundo DataFrame.
2df_magalu = pd.read_csv("/content/MGLU3.SA.csv")
1#Para ter espaço para os dois gráficos axes iremos deixar a figure com duas linhas e uma coluna.
2#Para isso, usaremos os parâmetros número de linhas nrows e número de colunas ncols.
3fig, (ax_01,ax_02) = plt.subplots(nrows=2, ncols=1)
1#Plotando dois gráficos e alocando-os nos respectivos axes (ax_01 e ax_02).
2df.Close.plot(ax=ax_01)df_magalu.Close.plot(ax=ax_02)
1#Adicionando títulos com o método set_title().
2ax_01.set_title("Ações TOTVS")ax_02.set_title("Ações MAGAZINE LUIZA")
1#Adicionando nome ao eixo x com o método set_label().
2ax_01.set_xlabel("Tempo")ax_02.set_xlabel("Tempo")
1#Adicionando nome ao eixo y com o método set_label().
2ax_01.set_ylabel("Preço")ax_02.set_ylabel("Preço")
1#Ajustando o layout com o método tight_layout().
2plt.tight_layout()
1#Para alterarmos o tamanho da figura usamos o parâmetro figsize.
2fig, (ax_01,ax_02) = plt.subplots(nrows=2,ncols=1, figsize=(largura, altura))
Este é o resultado: