Gráficos de dispersão complexos no Python [PARTE II] – Definindo cores, rótulos e título

Faaaaaaaaaaaaala cientista! Tudo certo?
No segundo post da série vamos melhorar nosso gráfico de dispersão preliminar, obtido a partir dos dados do IBGE [1]. Definiremos uma cor para cada região, adicionaremos rótulos e título. Com isso o gráfico começa a ficar mais informativo. Vamos lá?

Só pra lembrar, no primeiro post da série [2] utilizamos os códigos a seguir para definir nosso gráfico preliminar:

# importando os pacotes necessários.
import matplotlib.pyplot as plt
import pandas as pd

# lendo o arquivo dados_ibge.xls
dados_brasil = pd.read_excel('dados_ibge.xls', sheetname=2)

# gerando o gráfico.
plt.scatter(x = dados_brasil['ExpecVida'],
            y = dados_brasil['PIBperCapita'],
            s = dados_brasil['PopX1000'])
plt.show()

Com eles importamos o Pandas [3] e o matplotlib [4], lemos o arquivo dados_ibge.xls [5] e geramos o gráfico a seguir:

scatter_preliminar

Os eixos desse gráfico apresentam a expectativa de vida e o PIB per capita, e a população de cada estado é representada pelo tamanho de cada círculo. Mas ainda não sabemos qual é cada estado ou região.

Para que nosso gráfico fique mais informativo, adicionaremos rótulos e título. Além disso, para que cada estado possua uma cor relacionada à região na qual ele está, vamos definir uma cor para cada região.

Primeiro criaremos uma lista com os valores hexa da paleta de cores 5-class Dark2, do ColorBrewer2 [6]. Esse vetor tem cinco cores, cada uma representando uma região do Brasil:

cores = ['#1b9e77',
         '#d95f02',
         '#7570b3',
         '#e7298a',
         '#66a61e']

Agora definiremos uma função, atribui_cor(), que possui um dicionário apontando a cor correspondente a cada região. Quando a função recebe uma região que não está definida no dicionário, atribui_cor() retorna a cor preta, ‘black’.

def atribui_cor(regiao):
    cores = {
        'Norte':'#1b9e77',
        'Nordeste':'#d95f02',
        'Sudeste':'#7570b3',
        'Sul':'#e7298a',
        'CentroOeste':'#66a61e'
    }
    return cores.get(regiao, 'black')

Então criaremos o vetor de cores, uma lista que receberá a cor de cada estado de acordo com a região. A quantidade de estados é calculada pelo comprimento len(dados_brasil[‘Regiao’]), e a lista recebe cada valor usando append().

cor_regiao = list()
qtde_estados = len(dados_brasil['Regiao'])

for estado in range(qtde_estados):
    cor_regiao.append(atribui_cor(dados_brasil['Regiao'][estado]))

Usando print() vemos o vetor com as cores:

print(cor_regiao)

['#1b9e77', '#1b9e77', '#1b9e77', '#1b9e77', '#1b9e77', '#1b9e77', '#1b9e77', '#d95f02', '#d95f02', '#d95f02', '#d95f02', '#d95f02', '#d95f02', '#d95f02', '#d95f02', '#d95f02', '#7570b3', '#7570b3', '#7570b3', '#7570b3', '#e7298a', '#e7298a', '#e7298a', '#66a61e', '#66a61e', '#66a61e', '#66a61e']

Usaremos o vetor cor_regiao como argumento em scatter(), do matplotlib. Além disso, passaremos também o argumento alpha = 0.6, que deixará os círculos mais transparentes:

plt.scatter(x = dados_brasil['ExpecVida'],
            y = dados_brasil['PIBperCapita'],
            s = dados_brasil['PopX1000'],
            c = cor_regiao,
            alpha = 0.6)

Então, colocaremos o título, rótulos nos eixos X e Y, e grade:

plt.title('Desenvolvimento do Brasil em 2013, por estado', fontsize=22)
plt.xlabel('Expectativa de vida (anos)', fontsize=22)
plt.ylabel('PIB per capita (R$)', fontsize=22)
plt.grid(True)

O argumento fontsize=22 aumenta o tamanho da fonte exibida.

Para mostrar o gráfico, usamos plt.show(). A figura resultante é dada a seguir:

scatter_preliminarII.jpg

Nosso gráfico já melhorou em relação ao inicial! Agora, por exemplo, conseguimos ver que os estados tendem a estar próximos, de acordo com a sua região.

Ainda não conseguimos saber qual é cada estado, ou estimar qual é a quantidade de pessoas… também precisamos saber que cor representa cada região. Resolveremos isso na semana que vem, com mais rótulos e legendas! Fique conosco!

Valeu cientista! Um giga abraço e até a próxima!


Gostou? Curta e compartilhe com seus amigos!
Quer baixar os códigos do Programando Ciência? Corre lá no nosso GitHub!
Faça uma doação pro Programando Ciência!
Curta a gente também no Facebook: www.facebook.com/programandociencia
Estou no Twitter! Siga-me se puder! @alexdesiqueira

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s