Matplotlib: From Zero to Sidekick

Visualizando dados com Python!

Christian Costa
Data Hackers
3 min readNov 22, 2019

--

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 :

--

--

Christian Costa
Data Hackers

“Pelos livros que eu tive acesso minha obrigação é espalhar pro resto”