Matplotlib: From Zero to Sidekick
Visualizando dados com Python!
Pode-se dizer que a “trindade” da análise da dados com Python é composta por Pandas, NumPy e Matplotlib. O Vinícius Aguiar tem um ótimo tutorial aqui no Data Hackers sobre pandas e recentemente eu publiquei um sobre o básico de NumPy. Então vamos falar sobre Matplotlib!
O matplotlib faz parte do ecossistema SciPy (Bibliotecas de Python para computação científica) e é utilizado para visualização de dados. Ele surgiu com o objetivo de agregar ao Python as possibilidades visuais trazidas pelo MATLAB. O site com a documentação tem diversos exemplos (alguns deles assustadores) de plots que podem ser feitos utilizando o pyplot, aqui vamos falar sobre aqueles que talvez sejam os mais utilizados e mais palatáveis aos iniciantes em análise de dados.
Plot básico
Começamos o nosso código importando o módulo pyplot
que possibilita nossas visualizações 2D. Podemos utilizar from matplotlib import pyplot as plt
ou simplesmente import matplotlib.pyplot as plt
. Após importar vamos gerar alguns valores e exibi-los:
No exemplo acima criamos duas listas. Na lista numeros
passamos valores de um até cinco e na lista quadrados
usamos list comprehension para gerar uma lista com os quadrados da primeira. Depois disso utilizamos plt.plot(x,y)
que irá plotar a figura. No nosso caso os valores do eixo-x passados são os numeros
e no eixo-y os quadrados
.
Estilizando nosso plot
O plot acima é bem simples, utilizamos o design de cores e linha padrão e não temos nenhuma label nos eixos. Então vamos mudar um pouco o design:
Para mudar a cor da linha utiliza-se color
logo depois de passar os eixos a serem plotados. Nesse caso utilizei ‘red’
, mas poderia ser outra cor escrita por extenso (green, blue, yellow…) ou os valores em hexadecimal (#000, #fff, #242424…). A espessura da linha pode ser alterada com linewidth
, nesse caso cinco.
Além disso, gráficos também precisam ter alguma identificação nos eixos. Aqui utilizamos “Números” para o eixo-x e “Quadrados” para o eixo-y e podemos adicionar essa identificação através de xlabel
e ylabel
. Repare também que utilizamos fontsize
para modificar o tamanho da fonte.
Plotando mais de uma relação entre valores
No exemplo anterior temos apenas a relação numero-quadrado, que representamos por uma linha vermelha. Mas também poderíamos ter a relação numero-cubo, numero-quarta potência e assim por diante. Se além de quadrados tivéssemos cubos, o plot ficaria mais ou menos assim:
Criamos a lista cubos
e plotamos da mesma forma que fizemos anteriormente, alterando apenas a cor. A novidade aqui é label
que será utilizado como a legenda das duas linhas. Para exibir a legenda de cada linha utilizamos plt.legend()
.
Gráficos de Barra
Os gráficos de barra normalmente são utilizados quando temos dados agrupados por categoria. Vamos utilizar como exemplo a quantidade de álbuns de estúdio lançados pelo Metallica, Slayer e Megadeth:
Aqui temos a lista bandas
e a lista albuns_estudio
. Para plotar essas informações utilizamos plt.bar(x, y)
onde x são os nomes das bandas e y quantidade de álbuns.
Para mudar a aparência do plot vamos utilizar uma cor cinza escura em hexadecimal e adicionar um título com plt.title()
:
Scatterplots
Scatterplots são gráficos de dispersão e podem ser utilizados para visualização de distribuição dos dados em pontos. Vejamos o exemplo abaixo:
Utilizamos o NumPy para gerar alguns valores aleatórios e plotamos esses valores utilizando plt.scatter()
.
Para mudar a aparência da figura podemos usar s
(de size) para modificar o tamanho das bolinhas e alpha
que adiciona o efeito de transparência.
Histogramas
Os histogramas são utilizados para visualização da distribuição numérica de dados. Novamente vamos utilizar o NumPy para plotar valores aleatórios.
Para exibir esses respectivos valores como histograma utilizamos plt.hist()
:
Como feito anteriormente podemos mudar as cores, a opacidade (alpha
) e também a cor das bordas utilizando edgecolor
: