Gráfico de Dispersão no Python

O gráfico de dispersão, ou scatterplot, é um gráfico no qual se traçam os diferentes pares de pontos (x, y). É utilizado para entender a relação entre duas variáveis. Isto é, se x aumenta a medida que y aumenta, se não há nenhuma relação entre as variáveis, dentre outras possíveis interpretações. No exemplo abaixo, utilizamos a biblioteca numpy para criar uma série aleatória e matplotlib para gerar o gráfico:

# carrega bibliotecas
import numpy as np
import matplotlib.pyplot as plt

# gera numeros aleatorios para x e y
x = np.random.rand(100)
y = np.random.rand(100)

# plot grafico de dispersao
plt.scatter(x, y)

graficos_python_2
Para adicionar um título com plt.title:

# plot grafico de dispersao
plt.scatter(x, y)

# titulo do grafico
plt.title('Exemplo de Grafico de Dispersao')

graficos_python

Outras possibilidades é alterar as cores com c, que pode ser o código RGB ou a cor em inglês; e trocar o ponto por outros símbolos com o marker:

plt.scatter(x, y, c = 'red', marker = 's')
plt.title('Exemplo de Grafico de Dispersao')

graficos_python_3

Todas as variáveis possíveis você pode ver neste link. Já os markers possíveis você encontra neste link.

Mas e se quisermos fazer um gráfico com clusters? Isto é, separando por grupos?

Por exemplo, suponha que você tenha valores de x e y representando algum dado de estados diferentes, e queira que o gráfico represente cada estado com uma cor diferente. Nesse caso, você precisa combinar o for com o zip:


# dados de cada estado
SP= (0.9 * np.random.rand(20), 0.9*np.random.rand(20))
MG = (0.2 * np.random.rand(20), 0.2*np.random.rand(20))

# agrupa tabela
tabela_completa = (SP, MG)

# determina cor de cada estado no grafico
cores = ("blue", "red")

# cria um label para os grupos
estados = ("SP", "MG")

# Create plot
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, axisbg="1.0")

for data, color, group in zip(tabela_completa, cores, estados):
x, y = data
ax.scatter(x, y, alpha=0.8, c=color, edgecolors='none', s=30, label=group)

# titulo do grafico
plt.title('Graf. por Estado')

# insere legenda dos estados
plt.legend(loc=1)

graficos_python_5

Ps.: O título está sem acento por precaução. Normalmente esses softwares descaracterizam os nomes e o script quando há caracteres especiais.

Uma segunda opção para traçar gráficos de dispersão com diferentes agrupamentos você pode encontrar no blog apnorton.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s