sábado, 25 de abril de 2020

Gráfico com dados de arquivo com Matplotlib

Gráfico com dados de arquivo com Matplotlib


Se você leu os outros tutoriais, já deve saber que a biblioteca matplotlib não tem funções para leitura de dados em arquivos. A biblioteca matplotlib só renderiza o gráfico. Para ler dados de um arquivo vamos precisar usar funções fora do módulo matplotlib. Mas felizmente a linguagem python já vem com funções build-in para leitura e escrita de dados.
A primeira coisa que precisamos para ler dados de um arquivo é o arquivo com os dados que pretendemos ler. Nesse exemplo vamos usar um arquivo de texto com os seguintes dados:
0 0
1 1
2 4
3 9
4 16
5 25
6 36

Para fazer a leitura do arquivo vamos usar a função build-in open do python. E para desenhar o gráfico vamos usar o módulo matplotlib. Veja o código abaixo:
Exemplo
import matplotlib.pyplot as plt

x, y = [], []

for linha in open('dados.txt', 'r'):
  dados = [float(s) for s in linha.split()]
  x.append(dados[0])
  y.append(dados[1])

plt.plot(x, y)
plt.show()
O desenho do gráfico, com os dados do arquivo dados.txt, deve ficar parecido com esse:

Como podemos notar os dados no nosso arquivo são uma matriz. E qual biblioteca podemos usar para trabalhar com matrizes? Isso mesmo. A biblioteca numpy. Além de trabalhar com matrizes a biblioteca fornece a função loadtxt. A função loadtxt é usada para leitura de dados em arquivos txt.
Veja o mesmo exemplo acima, agora fazendo uso do módulo numpy:
Exemplo
import matplotlib.pyplot as plt
import numpy as np

dados = np.loadtxt('dados.txt')

plt.plot(dados[:,0], dados[:,1])
plt.show()
A função loadtxt retorna uma matriz de duas dimensões. Assim fica mais fácil para nos trabalharmos com esses dados. Utilizando um laço for o código pode ficar mais complexo.
Utilizando a biblioteca numpy, além de tornar o código menor, o código ficou mais fácil de entender. E a biblioteca numpy ainda trás funções para podermos ler dados de arquivos de text, CVS e Matlab.
A biblioteca numpy ainda trás vantagens quanto a velocidade e consumo de memória. Já que as partes de cálculos de matrizes da biblioteca foram escritas em C. E os dados são guardados na memoria como uma matriz numpy.

0 comentários:

Postar um comentário