Skip to content

Como criar rapidamente gráficos de várias linhas com Matplotlib

Updated 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).

PyGWalker para visualização de dados (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:

Execute o PyGWalker no Kaggle Notebook (opens in a new tab)Execute o PyGWalker no Google Colab (opens in a new tab)Dê uma ⭐️ para o PyGWalker no GitHub (opens in a new tab)
Execute o PyGWalker no Kaggle Notebook (opens in a new tab)Execute o PyGWalker no Google Colab (opens in a new tab)Execute o PyGWalker no Google Colab (opens in a new tab)

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.