Histogramas Matplotlib

MatplotlibBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá a criar e personalizar histogramas usando Matplotlib, uma das bibliotecas de visualização de dados mais populares em Python. Um histograma é uma ferramenta poderosa para visualizar a distribuição de um conjunto de dados numéricos. Ele agrupa números em intervalos (ou "bins") e exibe a frequência de pontos de dados que caem em cada bin.

Você passará pelas seguintes etapas:

  1. Gerar dados de amostra usando NumPy.
  2. Criar um histograma básico.
  3. Personalizar o número de bins.
  4. Alterar a cor e o estilo da borda das barras do histograma.
  5. Normalizar o histograma para mostrar a densidade de probabilidade.

Ao final deste laboratório, você será capaz de gerar histogramas informativos e visualmente atraentes para seus projetos de análise de dados. Todos os gráficos serão salvos como arquivos de imagem, que você poderá visualizar diretamente no LabEx WebIDE.

Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 84%. Recebeu uma taxa de avaliações positivas de 100% dos estudantes.

Gerar dados de amostra usando numpy.random

Nesta etapa, você gerará um conjunto de dados de amostra que poderemos usar para plotar um histograma. Usaremos a biblioteca NumPy, que é um pacote fundamental para computação científica em Python. Ela fornece um objeto de array multidimensional de alto desempenho e ferramentas para trabalhar com esses arrays.

Usaremos a função numpy.random.normal() para gerar dados que seguem uma distribuição normal (ou Gaussiana). Este é um tipo comum de distribuição de dados encontrado em muitos cenários do mundo real.

Primeiro, abra o arquivo main.py no explorador de arquivos no lado esquerdo do WebIDE. Em seguida, adicione o seguinte código a ele. Este código importará a biblioteca numpy e gerará 1000 números aleatórios com uma média de 0 e um desvio padrão de 1.

import numpy as np

## Generate 1000 data points from a normal distribution
## with a mean (loc) of 0 and a standard deviation (scale) of 1.
data = np.random.normal(loc=0, scale=1, size=1000)

print("Sample data generated successfully.")

Para executar o script, abra um terminal no WebIDE (Terminal -> New Terminal) e execute o seguinte comando. Seu diretório de trabalho já é /home/labex/project.

python3 main.py

Você verá uma mensagem de confirmação no terminal.

Sample data generated successfully.

A variável data em seu script agora contém um array de 1000 números, pronto para visualização na próxima etapa.

Plotar histograma usando plt.hist(data)

Nesta etapa, você criará seu primeiro histograma. Usaremos o módulo matplotlib.pyplot, que fornece uma interface simples para criar gráficos. Ele é convencionalmente importado com o alias plt.

A função principal para criar um histograma é plt.hist(). Em sua forma mais simples, ela recebe um único argumento: o array de dados que você deseja plotar.

Como estamos em um ambiente não interativo, não podemos exibir o gráfico diretamente com plt.show(). Em vez disso, devemos salvar o gráfico em um arquivo usando plt.savefig().

Atualize seu arquivo main.py com o seguinte código. Ele adiciona a lógica de plotagem do Matplotlib ao código de geração de dados da etapa anterior.

import numpy as np
import matplotlib.pyplot as plt

## Generate sample data
data = np.random.normal(loc=0, scale=1, size=1000)

## Create a histogram
plt.hist(data)

## Save the plot to a file
plt.savefig('/home/labex/project/histogram.png')

print("Basic histogram saved to histogram.png")

Agora, execute o script novamente no terminal:

python3 main.py

Você deverá ver a seguinte saída:

Basic histogram saved to histogram.png

Um novo arquivo chamado histogram.png aparecerá no explorador de arquivos à esquerda. Dê um duplo clique nele para abrir e visualizar seu primeiro histograma. Ele mostrará a distribuição de frequência dos dados aleatórios que você gerou.

Histogram

Definir número de barras usando o parâmetro bins

Nesta etapa, você aprenderá como controlar a granularidade do seu histograma definindo o número de barras (bins). Um "bin" é um intervalo que representa uma faixa de dados. O número de barras pode afetar significativamente como a distribuição é interpretada. Poucas barras podem ocultar detalhes importantes, enquanto muitas podem criar um gráfico ruidoso.

A função plt.hist() do Matplotlib possui um parâmetro bins que permite especificar o número de barras. Por padrão, o Matplotlib escolhe um número razoável, mas muitas vezes você desejará ajustá-lo.

Vamos modificar o código para criar um histograma com 30 barras. Também o salvaremos em um novo arquivo, histogram_bins.png, para compará-lo com o gráfico anterior.

Atualize seu arquivo main.py da seguinte forma:

import numpy as np
import matplotlib.pyplot as plt

## Generate sample data
data = np.random.normal(loc=0, scale=1, size=1000)

## Create a histogram with 30 bins
plt.hist(data, bins=30)

## Save the plot to a new file
plt.savefig('/home/labex/project/histogram_bins.png')

print("Histogram with 30 bins saved to histogram_bins.png")

Execute o script a partir do terminal:

python3 main.py

A saída será:

Histogram with 30 bins saved to histogram_bins.png

Agora, localize histogram_bins.png no explorador de arquivos e abra-o. Compare-o com o primeiro histograma. Você deverá notar que as barras estão mais estreitas, fornecendo uma visão mais detalhada da distribuição dos dados.

Histogram with 30 bins

Personalizar cor e edgecolor do histograma

Nesta etapa, você personalizará a aparência visual do histograma. Um gráfico bem estilizado é mais fácil de ler e mais profissional. A função plt.hist() oferece vários parâmetros para estilização, incluindo color para o preenchimento das barras e edgecolor para as bordas das barras.

Vamos mudar a cor das barras para um azul claro e adicionar bordas pretas para que cada bin se destaque mais claramente.

Modifique seu arquivo main.py para incluir esses novos parâmetros. Salvaremos este gráfico personalizado em histogram_color.png.

import numpy as np
import matplotlib.pyplot as plt

## Generate sample data
data = np.random.normal(loc=0, scale=1, size=1000)

## Create a histogram with 30 bins, custom color, and edgecolor
plt.hist(data, bins=30, color='skyblue', edgecolor='black')

## Save the plot to a new file
plt.savefig('/home/labex/project/histogram_color.png')

print("Styled histogram saved to histogram_color.png")

Execute o script no terminal:

python3 main.py

Você verá esta mensagem:

Styled histogram saved to histogram_color.png

Abra o arquivo recém-criado histogram_color.png. Você verá um histograma muito mais polido, com barras azul claro e contornos pretos distintos.

Styled histogram

Normalizar histograma usando density=True

Nesta etapa, você aprenderá como criar um histograma normalizado. Por padrão, o eixo y de um histograma representa a contagem de pontos de dados em cada bin. No entanto, às vezes é mais útil visualizar a distribuição como uma densidade de probabilidade. Em um histograma normalizado, a altura de cada barra é ajustada de modo que a área total de todas as barras seja igual a 1.

Isso é alcançado definindo o parâmetro density como True na função plt.hist(). Também é uma boa prática adicionar rótulos (labels) e um título ao seu gráfico para torná-lo autoexplicativo.

Vamos atualizar o script para criar um histograma normalizado e adicionar rótulos descritivos.

import numpy as np
import matplotlib.pyplot as plt

## Generate sample data
data = np.random.normal(loc=0, scale=1, size=1000)

## Create a normalized histogram
plt.hist(data, bins=30, color='skyblue', edgecolor='black', density=True)

## Add title and labels
plt.title('Normalized Histogram of Sample Data')
plt.xlabel('Value')
plt.ylabel('Probability Density')

## Save the plot to a new file
plt.savefig('/home/labex/project/histogram_normalized.png')

print("Normalized histogram saved to histogram_normalized.png")

Execute a versão final do seu script:

python3 main.py

A saída será:

Normalized histogram saved to histogram_normalized.png

Abra histogram_normalized.png. Observe que os valores do eixo y agora são muito menores. Eles representam a densidade de probabilidade, não contagens brutas. A forma geral da distribuição permanece a mesma, mas a escala agora está padronizada, o que é útil para comparar distribuições de conjuntos de dados de tamanhos diferentes.

Normalized histogram

Resumo

Parabéns por completar este laboratório! Você aprendeu as habilidades essenciais para criar e personalizar histogramas com Matplotlib em Python.

Neste laboratório, você:

  • Gerou dados de amostra usando numpy.random.normal().
  • Plotou um histograma básico com plt.hist().
  • Controlou o número de bins usando o parâmetro bins.
  • Estilizou seu histograma com os parâmetros color e edgecolor.
  • Criou um histograma de densidade de probabilidade normalizado usando density=True.
  • Adicionou um título e rótulos ao seu gráfico para melhor contexto.

Histogramas são uma ferramenta fundamental na exploração e análise de dados. As técnicas que você aprendeu aqui permitirão visualizar efetivamente a distribuição dos seus próprios conjuntos de dados. Sinta-se à vontade para continuar experimentando com outros parâmetros e tipos de gráficos em Matplotlib.