Como criar gráficos com matplotlib em Python
Gráficos com matplotlib em Python
O matplotlib é uma biblioteca gráfica 2D, que contém uma grande coleção de módulos para trabalho com gráficos e visualização de dados em Python.
Permite criar representações gráficas de dados de alta qualidade em vários formatos e também ambientes interativos, em inúmeras plataformas. Além de poder ser usado em scripts do Python, também pode ser empregado em Jupyter Notebooks, servidores de aplicação Web e em toolkits de interface gráfica, entre outros.
Com esta biblioteca podemos gerar gráficos de vários tipos, histogramas, scatterplots e muitos outros tipos de visualização de dados, usando poucas linhas de código (afinal, é Python!).
Neste artigo veremos como criar um gráfico simples usando matplotlib e seus módulos. Mas antes, vamos rever dois conceitos importantes que serão necessários: Plano Cartesiano e Geração de Listas em Python.
O Plano Cartesiano
Um plano cartesiano é, basicamente, uma representação gráfica que possui duas linhas numéricas: um eixo x (na horizontal) e um eixo y (na vertical), perpendiculares entre si.
O centro desse gráfico é chamado de Origem (O), e números no lado direito da origem no eixo x são positivos, e os à esquerda são negativos. Da mesma forma, números acima da origem no eixo y são positivos e números abaixo da origem, negativos.
Um ponto no gráfico é a combinação de um par de valores nos eixos x e y. Esse par de valores é chamado de coordenadas, estabelecendo a localização de um ponto qualquer.
A figura a seguir mostra um plano cartesiano com um ponto plotado (na cor roxa), na posição (2,3), que significa valor 2 no eixo x e valor 3 no eixo y:
Listas em Python
Usaremos listas para armazenar os dados que serão plotados nos gráficos. Assim, poderemos armazenar os valores dos eixos x e y que deverão ser plotados.
Antes disso, vamos relembrar como criar uma lista, acessar seus elementos individualmente e como iterar por eles.
Criar uma lista
Criamos uma lista atribuindo um conjunto de valores entre colchetes e separados por vírgulas a uma variável, como no exemplo a seguir:
minhaLista = [2, 5, 9, 12]
Criamos neste exemplo uma lista de nome minhaLista, contendo quatro elementos numéricos.
Acessar os elementos da lista
Para acessar um elemento de uma lista basta indicar o número da posição do elemento desejado, entre colchetes, logo após o nome da lista:
minhaLista[0] minhaLista[3]
Nos dois exemplos acima, acessamos os elementos das posições 0 e 3 da lista. Lembre-se que o primeiro elemento de uma lista é sempre o elemento da posição 0, de modo que o elemento da posição 3 da lista acima é na verdade o quarto elemento armazenado.
Iteração em uma lista
Podemos iterar por uma lista, acessando todos os seus elementos sequencialmente, usando um laço for, como no exemplo a seguir:
for item in minhaLista: print(item)
Cada elemento da lista é atribuído à variável item em cada iteração, e seu valor é impresso na tela.
Agora que revisamos a criação de uma lista e o acesso a seus elementos, vamos ver como instalar o matplotlib em seu sistema.
Instalação do matplotlib
A instalação dos pacotes do matplotlib é muito simples. O site oficial da biblioteca é www.matplotlib.org
Instalação no Windows
Para instalar a biblioteca em um computador com Windows execute os seguintes comandos em um prompt:
python -m pip install -U pip python -m pip install -U matplotlib
Instalação no Linux
Use o gerenciador de pacotes de sua distribuição para realizar a instalação do matplotlib no Linux. Por exemplo:
Debian / Ubuntu:
sudo apt install python3-matplotlib
Fedora:
sudo dnf install python3-matplotlib
Red Hat:
sudo yum install python3-matplotlib
Caso você esteja trabalhando com a distribuição Anaconda, não será necessário baixar e instalar o matplotlib, pois ele já vem instalado por padrão (além de trazer inúmeras outras ferramentas muito úteis para ciência de dados).
Mais informações sobre a instalação do matplotlib podem ser obtidas aqui: https://matplotlib.org/users/installing.html
Criar gráficos com matplotlib
Agora vamos criar gráficos com matplotlib efetivamente usando a biblioteca. Começamos criando duas listas para armazenar os dados dos eixos x e y que serão plotados no gráfico:
eixoX = [1, 2, 3, 4] eixoY = [2, 5, 9, 12]
Usaremos o módulo pylab para realizar as operações necessárias à plotagem de um gráfico simples.
O PyLab é uma interface para a biblioteca Matplotlib, sendo um módulo pertencente à biblioteca. Este módulo importa o matplotlib.pyplot, para plotagem de gráficos, e o NumPy, para cálculos matemáticos e operações com arrays, em um namespace único.
Importar os módulos necessários:
from pylab import plot, show
Criar o gráfico:
plot(eixoX, eixoY) show()
A função plot() cria o gráfico e o armazena em um objeto na memória; a função show() o mostra na tela.
Note que, se você não executar a função show(), o gráfico será criado mas não será exibido na tela, ficando armazenado em memória.
Como marcar os pontos no gráfico
Para marcar os pontos no gráfico usamos o parâmetro marker na função plot():
plot(eixoX, eixoY, marker='o')
O valor ‘o’ indica que os pontos serão pequenos círculos. podemos também marcar apenas os pontos no gráfico, sem as linhas que os conectam, da seguinte forma:
plot(eixoX, eixoY, 'o')
Como plotar mais de uma linha no mesmo gráfico
Vamos criar um gráfico que mostre as temperaturas máxima e mínima ao longo dos meses em um determinado local. Precisaremos de três listas:
meses = ['Jan', 'Fev', 'Mar','Abr','Mai','Jun','Jul','Ago','Set','Out','Nov','Dez'] Tmax = [38,39,32,29,26,22,19,15,20,22,25,27] Tmin = [23,23,22,21,19,16,12,10,16,21,22,22]
Agora passamos as listas em pares meses/temperaturas para a função plot():
from pylab import plot, show, legend plot(meses,Tmax,meses,Tmin) legend(['Tmax','Tmin']) show()
Note que uma cor diferente para cada linha é escolhida automaticamente, para indicar que cada linha corresponde a um conjunto de dados.
Note que também importamos o módulo legend, que nos permitirá adicionar uma legenda ao gráfico, de modo a sabermos qual linha corresponde a qual dado. A função legend() recebe uma lista de nomes como argumento, e usará essa lista para criar a legenda, com os nomes passados correspondendo às listas de valores plotadas no gráfico, em ordem.
A função legend() deve ser executada após a função plot() para funcionar.
Podemos adicionar um título e rótulos aos eixos x e y do gráfico. Para isso usamos as funções title(), xlabel() e ylabel(), que devem ser importadas a partir de seus módulos. Por exemplo, vamos adicionar rótulos e um título ao nosso gráfico:
from pylab import plot, show, legend, title, xlabel, ylabel meses = ['Jan', 'Fev', 'Mar','Abr','Mai','Jun','Jul','Ago','Set','Out','Nov','Dez'] Tmax = [38,39,32,29,26,22,19,15,20,22,25,27] Tmin = [23,23,22,21,19,16,12,10,16,21,22,22] plot(meses,Tmax,meses,Tmin) title('Temperaturas Máximas e Mínimas do Ano') xlabel('Mês') ylabel('Temp/°C') legend(['Tmax','Tmin']) show()
Finalmente, vamos configurar os valores máximo e mínimo de cada eixo. Por exemplo, queremos que o eixo y (temperaturas) mostre temperaturas entre 0 e 45 °C. Para isso, usamos a função axis() (importar o módulo axis também):
from pylab import plot, show, legend, title, xlabel, ylabel, axis
Adicionar a Função ao código anterior:
axis(ymin=0,ymax=45)
Resultado:
De forma similar, podemos também usar os parâmetros xmin e xmax na função axis() para determinar os limites numéricos máximo e mínimo no eixo x.
É isso aí! Nesta lição vimos como criar um gráfico bem básico – mas informativo – usando um módulo da biblioteca matplotlib. Na próxima lição vamos nos aprofundar na criação de gráficos mais especializados e em configurações mais complexas destes gráficos.
Até lá!.
Interessante conteudo. Você saberia me dizer como plotar o gráfico usando a vírgula commo separador decimal?