Criando gráficos no Python com a Matplotlib

(Last Updated On: 8 de novembro de 2018)

Quando estamos analisando dados, é comum vermos e manipularmos muitos números. Números de vendas, de acessos, de taxa de retorno entre muito outros.

Podemos analisar esses dados de muitas formas, podemos utilizar uma planilha eletrônica, como o Excel, ou o Google Sheets, podemos utilizar linguagens como Python e R para lerem nossos dados e armazená-los em estruturas de dados como listas, vetores, data frames, entre outros.

Estava utilizando o Python para analisar os dados de venda de uma loja de produtos eletrônicos. Em um momento, estava analisando os dados de venda no semestre me deparei com a seguinte planilha:

Janeiro Fevereiro Março Abril Maio Junho
105235 107697 110256 109236 107589 106986

Sabemos que essa tabela são mostrados os dados de venda do semestre, mas o que esses dados estão indicando? Tivemos um aumento nas vendas? Elas estão em queda?

Não temos uma noção clara do que esses dados significam, não conseguimos interpretá-los facilmente. O que podemos fazer para interpretar melhor esses dados?

Uma imagem vale mais que mil palavras

Ficar vendo os dados na tabela pode não ser a melhor forma de visualizá-los. Temos que ficar analisando linha por linha, valor por valor, o que pode ser bem trabalhoso.

Claro, os números são importantes para a gente fazer uma análise precisa, porém, quanto estamos apresentando os resultados, além dos números, podemos nos utilizar de outros elementos gráficos para passar melhor a mensagem.

Uma boa forma de apresentar dados é utilizando gráficos. Com gráficos podemos ter uma ideia geral do que os dados estão nos dizendo.

Por exemplo, nossa planilha de vendas por semestre, nós podemos criar um gráfico que mostra as progressões das vendas em cada mês.

Mas como podemos criar um gráfico?

Conhecendo a biblioteca

No Python, existe uma biblioteca muito famosa para criarmos gráficos, é a Matplotlib. Com ela, podemos montar diversos tipos de gráficos. Para começar a usar a biblioteca, temos que instalá-la. Portanto:

pip install matplotlib

Legal! Já instalamos a biblioteca, vamos começar a usá-la.

Nossa biblioteca é a matplotlib. Nós queremos utilizar ela para criar, isto é, plotar, gráficos. Então, falamos para o Python importar (import) da biblioteca matplotlib a parte de plotar gráficos com o Python (pyplot).


>>> import matplotlib.pyplot

Vamos criar um gráfico com a nossa planilha de vendas semestrais. Para isso, precisamos falar para o pyplot quais são os meses e quais são os valores de cada mês. Uma maneira de fazer isso é criar duas listas, uma com os meses e outra com os valores:


>>> meses = ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho']
>>> valores = [105235, 107697, 110256, 109236, 108859, 109986]

Agora, basta falarmos para o pyplot plotar (plot) o nosso gráfico:


>>> matplotlib.pyplot.plot(meses, valores)

Falamos para o pyplot criar o nosso gráfico, mas onde ele está? O nosso gráfico não apareceu. Quando falamos para o pyplot criar o gráfico, ele constrói o gráfico e o guarda em uma região da memória. Para conseguirmos ver o gráfico, precisamos falar para o pyplot mostrá-lo (show()):


>>> matplotlib.pyplot.show()

O método plot cria um gráfico de linhas. Podemos ver que os meses ficaram na parte horizontal do gráfico, isto é, no eixo X. Enquanto os valores ficaram na parte vertical do gráfico, ou seja, no eixo Y.

Com o gráfico, podemos ver de uma forma mais clara como foram as vendas em cada mês no primeiro semestre. Fica claro que até o mês de março tivemos um aumento nas vendas, em seguida tivemos uma queda um pouco grande até o mês de maio e em seguida voltamos a ter um aumento. Uma queda grande?

Se olharmos o eixo Y do gráfico veremos que os valores vão de 105.000 à 110.000. Ou seja, temos cinco mil reais de diferença entre a base e o topo do eixo Y.

Se olharmos bem para o gráfico e para os números, veremos que no mês de março o faturamento foi próximo a cento e dez mil e no próximo mês ele caiu para um valor próximo a cento e nove mil.

Olhando para os números, essa queda não parece ter sido tão grande, mas quando vemos apenas o gráfico, podemos pensar que tivemos uma queda maior.

Isso acontece pois os valores no nosso eixo Y são muito próximos um dos outros. Por isso, qualquer mudança nos valores para mais, ou para menos, podem causar distorções no gráfico.

Para evitar um pouco esse comportamento, podemos mudar os valores da base e do topo do eixo Y, ou seja, podemos alterar seu limite (ylim()):


>>> matplotlib.pyplot.plot(meses, valores)
>>> matplotlib.pyplot.ylim(100000, 120000)
>>> matplotlib.pyplot.show()

Mudando um pouco o limite do eixo Y, podemos ver que na verdade aquelas quedas no faturamento, que pareciam bruscas, são mais suaves do que aparentavam.

Agora, quando formos apresentar esse gráfico na reunião, ficará mais claro para as pessoas visualizarem… Visualizarem o que? Do que se trata esse gráfico?

Nós que construímos sabemos que se tratam das vendas semestrais, mas e para uma pessoa que nunca viu esse gráfico? O nosso gráfico tem apenas números e os meses.

As pessoas quando verem esse gráfico podem ficar se perguntando do que se trata esses números, o número de produtos vendidos? O lucro, em reais ou em dólares?

Para evitar essas possíveis confusões, precisamos deixar claro qual o propósito do nosso gráfico e o que cada eixo significa.

Detalhando as informações no gráfico

Podemos falar para o pyplot nomear o nosso gráfico, isto é, adicionar um título (title) a ele:


>>> matplotlib.pyplot.title('Faturamento no primeiro semestre de 2017')

Podemos também pedir para o pyplot escrever quais os significados dos valores no eixo X e no eixo Y. Ou seja, podemos pedir para ele rotular os dados desses eixos (xlabel, ylabel):


>>> matplotlib.pyplot.xlabel('Meses')
>>> matplotlib.pyplot.ylabel('Faturamento em R$')

Agora, quando pedimos para o pyplot mostrar nosso gráfico, veremos o título e o rótulo de cada eixo:

Temos um gráfico muito mais descritivo agora. Sabemos sobre o qual o assunto que ele trata, além de sabermos o significado dos eixos X e Y.

Para saber mais

Veja que da maneira que importamos o módulo do pyplot, sempre que precisamos chamar alguma função da biblioteca, temos que passar o caminho completo até o módulo, isto é, matplotlib.pyplot. Um nome um pouco grande, não?

Por isso, uma prática comum é darmos apelidos aos nossos imports. Por exemplo, podemos falar para o Python que estamos apelidando o módulo pyplot de plt, por exemplo:


>>> import matplotlib.pyplot as plt

Dessa forma, sempre que quisermos chamar esse módulo, basta chamá-lo pelo apelido:


>>> plt.show()

Além do gráfico de linhas, o pyplot pode criar também outros tipos de gráficos, como gráficos de barras, gráficos pizza, de dispersão, entre alguns outros.

Além de criar o gráfico e adicionar título e rótulos a ele, podemos também alterar a cor da linha e a cor de fundo. Aumentar o tamanho das letras, entre diversas outras customizações.

A parte de visualização de dados é umas das tarefas mais importantes de um cientista de dados, pois com ela, além de compreendermos os dados de uma maneira mais intuitiva, ela nos ajuda a transmitir o que os dados falam para outras pessoas.

Aqui na Alura, temos um curso de data visualization. Nele, você aprenderá qual o melhor gráfico para cada situação. Como construir um gráfico com um bom esquema de cores para facilitar a leitura, entre muitas outras coisas.

Também temos um curso de Google Charts. Com ele você aprenderá como criar gráficos para a web, utilizando a API do Google. Nele, você verá como criar gráficos de linhas, colunas, barras, entre vários outros.

FIQUE POR DENTRO

Próximo ArtigoEntendendo (e evitando) o phishing