Gráficos de Dispersão com Matplotlib

MatplotlibBeginner
Pratique Agora

Introdução

Bem-vindo ao laboratório sobre Gráficos de Dispersão (Scatter Plots) com Matplotlib! Gráficos de dispersão são uma ferramenta fundamental na visualização de dados, usados para exibir valores para tipicamente duas variáveis para um conjunto de dados. Eles são excelentes para observar relações ou correlações entre variáveis.

Neste laboratório, você usará a biblioteca Matplotlib em Python para criar gráficos de dispersão. Você aprenderá a:

  • Gerar arrays de dados usando NumPy.
  • Criar um gráfico de dispersão básico com plt.scatter().
  • Personalizar a aparência do gráfico, incluindo o tamanho e a cor dos marcadores.
  • Adicionar uma grade para melhorar a legibilidade.

Todo o seu trabalho será feito no ambiente WebIDE. Você escreverá código Python em um arquivo e o executará a partir do terminal. Como este ambiente não é interativo, você salvará seus gráficos em um arquivo de imagem usando plt.savefig() em vez de exibi-los com plt.show().

Vamos começar!

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 90%. Recebeu uma taxa de avaliações positivas de 100% dos estudantes.

Gerar arrays de dados x e y

Nesta etapa, você criará os dados que usaremos para o nosso gráfico de dispersão. Um gráfico de dispersão requer pelo menos dois arrays de dados de mesmo comprimento: um para as coordenadas do eixo x e outro para as coordenadas do eixo y. Usaremos a biblioteca NumPy, que é um padrão para operações numéricas em Python.

Primeiro, abra o arquivo main.py no explorador de arquivos no painel esquerdo do WebIDE. É aqui que você escreverá todo o seu código para este laboratório.

Agora, adicione o seguinte código ao main.py para importar o NumPy e criar dois arrays de dados simples.

import numpy as np

## Data for plotting
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])

Vamos analisar o código:

  • import numpy as np: Esta linha importa a biblioteca NumPy e atribui a ela o alias convencional np.
  • x = np.array([...]): Isso cria um array NumPy chamado x contendo nossos pontos de dados para o eixo horizontal.
  • y = np.array([...]): Isso cria um array NumPy chamado y contendo nossos pontos de dados para o eixo vertical.

Seu arquivo main.py agora deve conter este código. Na próxima etapa, usaremos esses dados para criar nosso primeiro gráfico.

Plotar dispersão usando plt.scatter(x, y)

Nesta etapa, você criará um gráfico de dispersão básico usando os dados que gerou. Usaremos o módulo matplotlib.pyplot, que fornece uma interface simples para criar gráficos.

Primeiro, você precisa importar matplotlib.pyplot. Em seguida, pode usar a função plt.scatter() para criar o gráfico. Finalmente, você deve salvar o gráfico em um arquivo. Conforme mencionado na introdução, não podemos usar plt.show() para exibir o gráfico diretamente neste ambiente. Em vez disso, usaremos plt.savefig() para salvá-lo como uma imagem.

Atualize seu arquivo main.py com o seguinte código. Adicione as novas linhas abaixo do código existente.

import numpy as np
import matplotlib.pyplot as plt

## Data for plotting
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])

## Create scatter plot
plt.scatter(x, y)

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

print("Scatter plot saved to scatter_plot.png")

Explicação do código:

  • import matplotlib.pyplot as plt: Importa o módulo de plotagem e atribui a ele o alias padrão plt.
  • plt.scatter(x, y): Esta é a função principal. Ela pega os arrays x e y e plota cada par de valores (x, y) como um ponto.
  • plt.savefig('/home/labex/project/scatter_plot.png'): Esta função salva a figura atual em um arquivo chamado scatter_plot.png no seu diretório ~/project.

Agora, execute seu script a partir do terminal na parte inferior do WebIDE:

python3 main.py

Você deverá ver a seguinte saída no terminal:

Scatter plot saved to scatter_plot.png

Um novo arquivo chamado scatter_plot.png aparecerá no explorador de arquivos à esquerda. Dê um duplo clique nele para visualizar seu primeiro gráfico de dispersão!

Scatter plot

Personalizar tamanho do marcador usando o parâmetro s

Nesta etapa, você aprenderá como personalizar o tamanho dos marcadores (os pontos) no seu gráfico de dispersão. A função plt.scatter() possui um parâmetro opcional s que controla o tamanho do marcador.

Você pode fornecer um único número para que todos os marcadores tenham o mesmo tamanho, ou pode fornecer um array de números (com o mesmo comprimento dos seus dados x e y) para especificar um tamanho único para cada marcador. Vamos tentar a segunda opção para tornar o gráfico mais interessante.

Modifique seu arquivo main.py. Criaremos um array sizes e o passaremos para o parâmetro s na função plt.scatter().

import numpy as np
import matplotlib.pyplot as plt

## Data for plotting
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])
sizes = np.array([20, 50, 100, 200, 500, 1000, 60, 90, 10, 300, 600, 800, 75])

## Create scatter plot with custom sizes
plt.scatter(x, y, s=sizes)

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

print("Scatter plot with custom sizes saved to scatter_plot_sizes.png")

No código atualizado, adicionamos um array sizes e modificamos a chamada plt.scatter() para plt.scatter(x, y, s=sizes). Agora, cada ponto será plotado com seu tamanho correspondente do array sizes.

Execute o script novamente para ver as alterações:

python3 main.py

Após a conclusão do script, abra o arquivo scatter_plot_sizes.png novamente. Você notará que os marcadores agora têm tamanhos diferentes, tornando o gráfico mais informativo visualmente.

Scatter plot with custom sizes

Alterar cor do marcador usando o parâmetro c

Nesta etapa, personalizaremos a cor dos marcadores. Semelhante ao tamanho, você pode controlar a cor usando o parâmetro c na função plt.scatter().

Você pode passar um único nome de cor (por exemplo, 'red') para que todos os marcadores tenham a mesma cor, ou pode passar um array de cores para dar a cada marcador uma cor específica. Vamos atribuir uma cor única a cada ponto.

Atualize seu arquivo main.py para incluir um array colors e passá-lo para o parâmetro c.

import numpy as np
import matplotlib.pyplot as plt

## Data for plotting
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])
sizes = np.array([20, 50, 100, 200, 500, 1000, 60, 90, 10, 300, 600, 800, 75])
colors = np.array(["red", "green", "blue", "yellow", "pink", "black", "orange", "purple", "beige", "brown", "gray", "cyan", "magenta"])

## Create scatter plot with custom sizes and colors
plt.scatter(x, y, s=sizes, c=colors)

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

print("Scatter plot with custom colors saved to scatter_plot_colors.png")

Agora adicionamos um array colors contendo nomes de cores e atualizamos a chamada da função para plt.scatter(x, y, s=sizes, c=colors).

Execute o script a partir do terminal:

python3 main.py

Abra o arquivo scatter_plot_colors.png mais uma vez. Você verá um gráfico de dispersão colorido onde cada ponto tem um tamanho e cor diferentes, conforme definido em nossos arrays.

Scatter plot with custom colors

Adicionar grade usando plt.grid()

Nesta etapa final, você adicionará uma grade ao seu gráfico de dispersão. Uma grade pode facilitar a leitura dos valores dos pontos de dados nos eixos.

Adicionar uma grade no Matplotlib é muito simples. Você só precisa chamar a função plt.grid() antes de salvar o gráfico. Por padrão, plt.grid(True) exibirá a grade.

Vamos adicionar isso ao nosso script. Modifique main.py para incluir a chamada plt.grid().

import numpy as np
import matplotlib.pyplot as plt

## Data for plotting
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])
sizes = np.array([20, 50, 100, 200, 500, 1000, 60, 90, 10, 300, 600, 800, 75])
colors = np.array(["red", "green", "blue", "yellow", "pink", "black", "orange", "purple", "beige", "brown", "gray", "cyan", "magenta"])

## Create scatter plot
plt.scatter(x, y, s=sizes, c=colors)

## Add a grid
plt.grid(True)

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

print("Scatter plot with grid saved to scatter_plot_grid.png")

Adicionamos plt.grid(True) logo antes de plt.savefig(). Isso instrui o Matplotlib a desenhar uma grade no gráfico.

Execute a versão final do seu script:

python3 main.py

Agora, verifique a imagem scatter_plot_grid.png. Seu gráfico agora deve ter uma grade em segundo plano, completando nosso gráfico de dispersão personalizado.

Scatter plot with grid

Resumo

Parabéns por completar o laboratório! Você aprendeu com sucesso os fundamentos da criação e personalização de gráficos de dispersão com Matplotlib.

Neste laboratório, você praticou:

  • Gerar dados para plotagem usando NumPy.
  • Criar um gráfico de dispersão básico com plt.scatter().
  • Personalizar tamanhos de marcadores usando o parâmetro s.
  • Alterar cores de marcadores usando o parâmetro c.
  • Adicionar uma grade ao gráfico com plt.grid().
  • Salvar seus gráficos em um arquivo com plt.savefig().

Estas são habilidades essenciais para visualização de dados em Python. Agora você pode criar gráficos de dispersão informativos e visualmente atraentes para explorar relacionamentos em seus dados. Para continuar aprendendo, você pode explorar a adição de títulos e rótulos, o uso de diferentes estilos de marcadores ou a aplicação de mapas de cores para visualizações mais avançadas.