DEV Community

Danilo
Danilo

Posted on

Histograma de frequência para a aquicultura.

Image description

Olá! Neste tutorial vou ensinar de forma rápida e completa tudo que você precisa saber para criar um histograma de frequências utilizando a linguagem de programação Python e a biblioteca matplotlib.

Lembrando que precisa ter a biblioteca matplotlib instalada juntamente com o python:
install-matplotlib

1. quando usar um histograma de frequência?

Se você assim como eu trabalho diretamente com peixes e em algum momento precisou interpretar um grande número de dados como, peso, comprimento ou tempo de cultivo, sabe que apenas olhando pode ficar difícil extrair algum tipo de informação relevante.

Imaginemos um grupo de informações sobre o peso(g) de um conjunto de 100 peixes:

          peso = [100, 435, 420, 850, 420, 900, 862, 730, 50, 235,
                782, 163, 686, 658, 357, 233, 398, 622, 567, 611,
                 747, 864, 941, 836, 533, 566, 681, 537, 694, 644,
                 973, 764, 864, 551, 511, 558, 596, 870, 783, 863,
                 618, 591, 784, 635, 522, 652, 955, 767, 729, 526,
                 708, 894, 179, 713, 686, 213, 342, 455, 552, 356,
                 610, 816, 382, 872, 629, 33, 365, 785, 562, 212,
                 600, 731, 309, 459, 399, 293, 408, 524, 430, 267,
                528, 849, 765, 653, 767, 539, 716, 137, 793, 775,
                530, 540, 367, 721, 703, 491, 551, 576, 403, 632]
Enter fullscreen mode Exit fullscreen mode

copie e cole este código no seu editor de preferência.

E se nos fosse solicitado as seguintes informações:

A - Quantos peixes possuem peso acima de 500g? (peso ≥ 500g)
B - Quantos estão com peso abaixo de 250g? (peso ≥ 250g)
C - Quantos estão entre 300g e 800g?

Como um bom estudante/profissional você conseguiria responder estas perguntas apenas olhando para a lista, porem não seria nada produtivo!

Vamos então criar um histograma para a nossa lista de peso:

import matplotlib.pyplot as plt  

peso = [100, 435, 420, 850, 420, 900, 862, 730, 50, 235,  
 782, 163, 686, 658, 357, 233, 398, 622, 567, 611,  
 747, 864, 941, 836, 533, 566, 681, 537, 694, 644,  
 973, 764, 864, 551, 511, 558, 596, 870, 783, 863,  
 618, 591, 784, 635, 522, 652, 955, 767, 729, 526,  
 708, 894, 179, 713, 686, 213, 342, 455, 552, 356,  
 610, 816, 382, 872, 629, 33, 365, 785, 562, 212,  
 600, 731, 309, 459, 399, 293, 408, 524, 430, 267,  
 528, 849, 765, 653, 767, 539, 716, 137, 793, 775,  
 530, 540, 367, 721, 703, 491, 551, 576, 403, 632]  

plt.hist(peso, 5, rwidth=0.9)  
plt.show()
Enter fullscreen mode Exit fullscreen mode

Teremos o restado:

Image description

Perfeito, Chegamos a algumas das respostas:

A - Pelo menos 20 animais possuem o peso acima de 500:

Image description

B - 22,5 Estão com o peso inferior a 250 gramas

Image description

C - Aproximadamente 68,5 possuem peso entre 300g e 800g

Image description

Porem precisamos entender cada parâmetro utilizado para este gráfico:

Peso: é a nossa lista com os cem pesos dos peixes

5: numero de barras ou classes que queremos que nosso histograma mostre.

rwidth: O tamanho relativo que queremos que a barra tenha no nosso caso rwidth=0.9;
Caso fique curioso, pode mudar o valor de 0.9 para 0.5 e tera um resultado parecido com o da imagem:

Image description

2 - Agora podemos formatar, adicionar títulos e etiquetas.

Perceba que nosso histograma está completo, porem como outras pessoas vão saber do que se trata esse gráfico?
para isso vamos adicionar as informações de título e etiquetas para os eixos x e y:

import matplotlib.pyplot as plt  

peso = [100, 435, 420, 850, 420, 900, 862, 730, 50, 235,  
 782, 163, 686, 658, 357, 233, 398, 622, 567, 611,  
 747, 864, 941, 836, 533, 566, 681, 537, 694, 644,  
 973, 764, 864, 551, 511, 558, 596, 870, 783, 863,  
 618, 591, 784, 635, 522, 652, 955, 767, 729, 526,  
 708, 894, 179, 713, 686, 213, 342, 455, 552, 356,  
 610, 816, 382, 872, 629, 33, 365, 785, 562, 212,  
 600, 731, 309, 459, 399, 293, 408, 524, 430, 267,  
 528, 849, 765, 653, 767, 539, 716, 137, 793, 775,  
 530, 540, 367, 721, 703, 491, 551, 576, 403, 632]  

plt.title('Lote de 100 peixes')  
plt.xlabel('PESOg')  
plt.ylabel('Frequência Absoluta')  
plt.hist(peso, 10, rwidth=0.9)  
plt.show()
Enter fullscreen mode Exit fullscreen mode

Image description
Caso queira aumentar a fonte do título e das etiquetas, basta adicionar em plt.title('Lote de 100 peixes') uma vírgula , e escrever fontsize=15

ficando então:

plt.title('Lote de 100 peixes', fontsize=20)
plt.xlabel('PESOg',fontsize=15)
plt.ylabel('Frequência Absoluta',fontsize=15)
plt.tick_params(labelsize=12)

Este ultimo muda o tamanho da fonte dos números(parâmetros)

Agora temos um histograma bonito e legível.

Image description

Com isso, podemos afirmar que o gráfico em histograma é um forte aliado para agilizar a interpretação e visualização da distribuição do peso dos nossos peixes. Porem saiba que esta é somente a forma introdutória do gráfico e existem muitas outras possibilidades de construção de gráficos.

Versão final do nosso código:

import matplotlib.pyplot as plt  

peso = [100, 435, 420, 850, 420, 900, 862, 730, 50, 235,  
 782, 163, 686, 658, 357, 233, 398, 622, 567, 611,  
 747, 864, 941, 836, 533, 566, 681, 537, 694, 644,  
 973, 764, 864, 551, 511, 558, 596, 870, 783, 863,  
 618, 591, 784, 635, 522, 652, 955, 767, 729, 526,  
 708, 894, 179, 713, 686, 213, 342, 455, 552, 356,  
 610, 816, 382, 872, 629, 33, 365, 785, 562, 212,  
 600, 731, 309, 459, 399, 293, 408, 524, 430, 267,  
 528, 849, 765, 653, 767, 539, 716, 137, 793, 775,  
 530, 540, 367, 721, 703, 491, 551, 576, 403, 632]  

plt.title('Lote de 100 peixes', fontsize=20)  
plt.xlabel('PESOg', fontsize=15)  
plt.ylabel('Frequência Absoluta', fontsize=15)  
plt.tick_params(labelsize=12)  
plt.hist(peso, 10, rwidth=0.9)  
plt.show()
Enter fullscreen mode Exit fullscreen mode
                     Muito Obrigado!!!!
Enter fullscreen mode Exit fullscreen mode

Latest comments (0)