Como criar rapidamente gráficos de várias linhas com Matplotlib
Published on
A visualização de dados é uma parte fundamental de qualquer pipeline de análise de dados. Ela permite a representação clara e intuitiva de conjuntos de dados complexos e a descoberta de tendências e padrões que podem não ser óbvios a partir dos dados brutos. Entre a infinidade de ferramentas disponíveis para esse fim, o Matplotlib é uma das bibliotecas Python mais amplamente utilizadas, fornecendo uma plataforma versátil e poderosa para criar gráficos estáticos, animados e interativos.
Um recurso comumente usado no Matplotlib é a habilidade de criar múltiplos gráficos de linhas em um único gráfico. Neste guia abrangente, veremos os detalhes de como você pode criar essas visualizações, focando em princípios básicos e conceitos mais avançados.
Conceitos básicos: traçando duas linhas
Vamos começar com um cenário simples: traçando dois gráficos de linhas no mesmo gráfico. Aqui está o código que um usuário postou em um fórum online, relatando que o eixo y estava sendo impresso duas vezes:
import matplotlib.pyplot as plt
x = [0, 1, 2, 3, 4, 5]
y1 = ['1000', '13k', '26k', '42k', '60k', '81k']
y2 = ['1000', '13k', '27k', '43k', '63k', '85k']
plt.plot(x, y1)
plt.plot(x, y2, '-.')
plt.xlabel("Dados do eixo X")
plt.ylabel("Dados do eixo Y")
plt.title('vários gráficos')
plt.show()
Uma breve olhada no código revela a raiz do problema: os valores y sendo traçados são strings em vez de números. Quando o Matplotlib encontra dados de string, ele não traça esses valores em uma escala numérica. Em vez disso, ele simplesmente traça os rótulos de string em suas respectivas coordenadas x, levando a múltiplos rótulos se sobrepondo no eixo y.
Corrigindo o problema de strings: Convertendo para numérico
Para resolver esse problema, o 'k' nas strings precisa ser substituído por 'e3', permitindo que essas strings representem números na notação científica. Em seguida, elas podem ser convertidas em números em ponto flutuante usando a função float()
do Python.
O código corrigido ficaria assim:
import matplotlib.pyplot as plt
x = [0, 1, 2, 3, 4, 5]
y1 = ['1000', '13k', '26k', '42k', '60k', '81k']
y2 = ['1000', '13k', '27k', '43k', '63k', '85k']
plt.plot(x, [float(i.replace('k', 'e3')) for i in y1])
plt.plot(x, [float(i.replace('k', 'e3')) for i in y2], '-.')
plt.xlabel("Dados do eixo X")
plt.ylabel("Dados do eixo Y")
plt.title('vários gráficos')
plt.show()
Com essa simples alteração, o usuário conseguiu traçar corretamente duas linhas no mesmo gráfico sem duplicação de rótulos no eixo y. É importante observar, no entanto, que essa conversão é feita puramente para fins de plotagem e não modifica os dados originais.
Ajustando múltiplos gráficos de linhas: legendas, linhas de grade e anotações
Legendas podem ser adicionadas ao gráfico usando a função legend()
, enquanto as linhas de grade podem ser ativadas ou desativadas usando a função grid()
. Para anotações, você pode usar a função annotate()
para adicionar texto informativo ao gráfico.
Aplicando essas técnicas, nosso código final para criar múltiplos gráficos de linhas no Matplotlib poderia ficar assim:
import matplotlib.pyplot as plt
x = [0, 1, 2, 3, 4, 5]
y1 = ['1000', '13k', '26k', '42k', '60k', '81k']
y2 = ['1000', '13k', '27k', '43k', '63k', '85k']
plt.plot(x, [float(i.replace('k', 'e3')) for i in y1], label='Linha 1')
plt.plot(x, [float(i.replace('k', 'e3')) for i in y2], '-.', label='Linha 2')
plt.xlabel("Dados do eixo X")
plt.ylabel("Dados do eixo Y")
plt.title('vários gráficos')
plt.grid(True)
plt.legend()
plt.annotate('Valor máximo para a Linha 2', xy=(4, 85000), xytext=(3, 70000),
arrowprops=dict(facecolor='black', shrink=0.05))
plt.show()
Como fica evidente, a criação de múltiplos gráficos de linhas com o Matplotlib é um processo relativamente simples que oferece uma ampla variedade de opções de personalização para criar visualizações bonitas, informativas e esclarecedoras.
FAQ
P: Posso traçar mais de duas linhas em um único gráfico com o Matplotlib?
Sim, você pode traçar quantas linhas desejar em um único gráfico usando o Matplotlib. Basta repetir a função plot()
com os dados desejados para cada linha.
P: Que outros tipos de gráficos posso criar com o Matplotlib?
O Matplotlib suporta uma ampla variedade de outros tipos de gráficos, incluindo gráficos de dispersão, gráficos de barras, histogramas e até mesmo gráficos 3D. A biblioteca é altamente versátil e pode atender a quase qualquer necessidade de visualização de dados.
P: Como posso salvar meu gráfico em um arquivo usando o Matplotlib?
Depois de criar seu gráfico, você pode usar a função savefig()
para salvá-lo em um arquivo. A função aceita o nome do arquivo como argumento, e você pode especificar o formato do arquivo (por exemplo, PNG, PDF, SVG, etc.) usando a extensão de arquivo apropriada.
plt.savefig('meu_gráfico.png')
Alternativa ao Matplotlib: Visualize dados com o PyGWalker
Além de usar o Matplotlib para visualizar seu dataframe do pandas, aqui está uma biblioteca alternativa de código aberto que pode ajudar você a criar visualizações de dados facilmente: PyGWalker (opens in a new tab).
Não há necessidade de realizar processamentos complicados com codificação Python, basta importar seus dados e arrastar e soltar as variáveis para criar todos os tipos de visualizações de dados! Aqui está um vídeo demonstrativo rápido sobre o funcionamento:
Aqui está o arquivo traduzido:
Veja como usar o PyGWalker no seu Jupyter Notebook:
pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)
Alternativamente, você pode testá-lo no Kaggle Notebook/Google Colab:
O PyGWalker é construído com o apoio de nossa comunidade de código aberto. Não se esqueça de conferir o PyGWalker no GitHub (opens in a new tab) e nos dar uma estrela!
Perguntas Frequentes
Eu posso traçar mais de duas linhas em um único gráfico com o Matplotlib?
Sim, você pode traçar quantas linhas precisar em um único gráfico usando o Matplotlib. Basta repetir a função plot() com os dados desejados para cada linha.
Quais outros tipos de gráficos posso criar com o Matplotlib?
O Matplotlib suporta uma ampla variedade de outros tipos de gráficos, incluindo gráficos de dispersão, gráficos de barras, histogramas e até mesmo gráficos 3D. A biblioteca é altamente versátil e pode atender a quase qualquer necessidade de visualização de dados.
Como posso salvar meu gráfico em um arquivo usando o Matplotlib?
Depois de criar seu gráfico, você pode usar a função savefig() para salvá-lo em um arquivo. A função recebe um nome de arquivo como argumento e você pode especificar o formato do arquivo (por exemplo, PNG, PDF, SVG, etc.) usando a extensão de arquivo apropriada.