Domine o Matplotlib: Crie Gráficos Incríveis em Python!

Matplotlib é uma ferramenta essencial na linguagem Python, amplamente utilizada por profissionais de Machine Learning para gerar representações visuais de dados, tanto estáticas quanto interativas.

Explorando o Matplotlib

Criado por John D. Hunter em 2003, o Matplotlib foi lançado em 8 de maio de 2021 e atualmente está na versão 3.4.2.

Esta biblioteca é desenvolvida principalmente em Python, com partes escritas em Objective-C e JavaScript, o que garante sua compatibilidade com diversas plataformas.

O Matplotlib utiliza o NumPy, uma extensão numérica do Python. Essa integração fortalece sua posição como uma alternativa de código aberto, oferecendo uma solução mais acessível em comparação com o MATLAB.

Em aplicações Python com interface gráfica, o Matplotlib possibilita a criação de gráficos estáticos através de sua API orientada a objetos.

Com apenas algumas linhas de código Python, é possível visualizar dados usando uma variedade de gráficos, como gráficos de dispersão, histogramas, gráficos de barras, gráficos de pizza, gráficos de linha e diagramas de caixa.

O Matplotlib pode ser utilizado em vários ambientes, incluindo o shell Python, notebooks Jupyter, e em IDEs como Pycharm ou Anaconda, além de servidores web como Flask e Django em diversas plataformas.

Assim como no MATLAB, o Matplotlib oferece controle detalhado sobre os gráficos, permitindo personalizar fontes, linhas, cores e estilos.

Após esta introdução à biblioteca Matplotlib, vamos explorar como configurá-la em nossos sistemas.

Configuração do Ambiente Matplotlib

Semelhante a outros pacotes e bibliotecas Python, o Matplotlib pode ser instalado em qualquer sistema operacional através do gerenciador de pacotes pip.

Para isso, é necessário que o Python e o pip estejam instalados em seu sistema.

Os comandos a seguir verificam a versão do Python e do pip para confirmar se essas ferramentas estão prontas para uso.

Verificação da Instalação do Python

python --version

Verificação da Instalação do pip

pip -V

Instalação do Matplotlib

O comando abaixo instala o pacote Matplotlib diretamente do Python Package Index (PyPI).

python -m pip install matplotlib

Este comando baixa e instala todos os pacotes necessários do Matplotlib. Uma mensagem de instalação bem-sucedida será exibida após a conclusão.

Para garantir que o Matplotlib foi instalado corretamente, execute o seguinte comando, que exibirá a versão do Matplotlib no prompt de comando.

import matplotlib
matplotlib.__version__

Desenvolvedores que desejam instalar o Matplotlib sem compilação precisarão ter um compilador adequado em seu sistema, além das dependências, scripts de configuração, arquivos de configuração e patches.

No entanto, essa instalação não compilada do Matplotlib pode ser complexa, especialmente para iniciantes. Assim, a instalação via pip é mais recomendada pela sua simplicidade. 🤔

Após a instalação, importe o pacote para o seu ambiente para começar a utilizar suas funcionalidades.

Opções de Visualização do Matplotlib

O Matplotlib oferece diversas opções de visualização para apresentar dados, além de permitir personalizações com temas, cores e paletas variadas.

Essas opções de visualização incluem:

#1. Gráficos de Barras

Os gráficos de barras, ideais para comparar valores quantitativos dentro de uma mesma categoria.

O Matplotlib os representa com barras retangulares, onde o comprimento ou altura indicam os valores proporcionais. As barras podem ser dispostas horizontalmente ou verticalmente.

O Matplotlib utiliza a função plt.bar() para criar esses gráficos.

Além disso, outras funções podem ser usadas para personalizar o gráfico, como plt.xlabel() e plt.ylabel() para adicionar rótulos aos eixos x e y, respectivamente. A função plt.title() define o título do gráfico, enquanto plt.savefig() salva o gráfico. A função plot.show(), exibe o gráfico.

#2. Gráficos de Pizza

Gráficos de pizza são ideais para visualizar a distribuição proporcional de itens dentro de uma mesma categoria, em formato circular.

Esses gráficos mostram os dados em porcentagens, onde a área total do círculo representa a totalidade dos dados e cada fatia individual representa uma parte dessa porcentagem.

O Matplotlib utiliza a função plt.pie() para criar e configurar os gráficos de pizza. Parâmetros como autopct, que adiciona valores percentuais com uma casa decimal, são úteis na personalização do gráfico.

Gráficos de pizza são frequentemente utilizados em ambientes corporativos para apresentar informações sobre operações, vendas e recursos.

#3. Histogramas

Histogramas mostram a distribuição de dados numéricos, dividindo-os em intervalos contínuos.

A principal diferença entre histogramas e gráficos de barras é o tipo de dado manipulado. Histogramas lidam com dados contínuos, enquanto gráficos de barras lidam com dados categóricos.

O Matplotlib usa a função hist(), que recebe um array de valores aleatórios ou definidos para criar o histograma.

#4. Gráficos de Linha

Gráficos de linha são ideais para mostrar a relação entre dois conjuntos de dados, definidos como numéricos e categóricos, utilizando um eixo X e Y.

Esses gráficos são úteis para acompanhar a variação dos valores ao longo do tempo.

#5. Gráficos de Dispersão

Gráficos de dispersão indicam a relação, incluindo a correlação, entre variáveis nos dados e auxiliam na identificação de outliers.

Utilizam pontos para representar a relação entre variáveis e como a alteração em uma variável pode afetar outra.

Como Criar Gráficos no Matplotlib

O Matplotlib usa funções específicas para cada tipo de gráfico, permitindo a criação com poucas linhas de código.

A seguir, veremos como criar diferentes tipos de gráficos usando as funções do Matplotlib.

#1. Gráfico de Barras no Matplotlib

Gráficos de barras, como já vimos, exibem categorias de dados através de barras em eixos, onde um eixo representa as categorias e o outro representa os valores correspondentes.

A função bar() no Matplotlib utiliza diversos argumentos para descrever o layout das barras, conforme abaixo.

plt.bar(x, y, height, width, bottom, align)

Os parâmetros x e y representam os valores das coordenadas x e y das barras. O parâmetro width define a largura da barra, enquanto height define a altura.

Por exemplo, vamos representar o número de cães e gatos em um abrigo de animais chamado x.

import matplotlib.pyplot as plt
import numpy as np

x = ["Cats", "Dogs"]
plt.xlabel("Cats and Dogs in Shelter")
plt.ylabel("No. of animals in Shelter")
plt.title("Number of cats and dogs in shelter x")
y = [300, 350]
plt.bar(x, y, color="black", width = 0.5)

Resultado:

Saída do gráfico de barras no Mathplotlib

Neste exemplo, especificamos a cor das barras com o atributo color. Adicionalmente, plt.xlabel e plt.ylabel nomeiam os eixos x e y, enquanto plt.title nomeia o gráfico.

#2. Como Criar um Gráfico de Pizza

O Matplotlib utiliza a função pie() do módulo pyplot para plotar gráficos de pizza. A função recebe os dados a serem plotados em formato de array.

Sintaxe:

matplotlib.pyplot.pie(data, explode=None, labels=None, colors=None, autopct=None, shadow=False)

O parâmetro colors define as cores das fatias. Pode-se usar um array de valores para especificar cores diferentes para cada fatia.

O argumento autopct adiciona as porcentagens numéricas a cada fatia. O argumento explode aceita um array de valores, começando em 0.1, para definir a distância da fatia em relação ao centro do círculo.

Vamos criar um gráfico de pizza que mostre os recursos alocados para um projeto específico, em porcentagem.

import matplotlib.pyplot as plt
import numpy as np

y = np.array([25, 10, 45, 20])
mylabels = ["w", "x", "y", "z"]
explodevalues = [0.1, 0.2, 0, 0]
colors = ['tab:blue', 'tab:green', 'tab:orange', 'tab:red']
plt.title("Resources allocated for a random project")
plt.pie(y, labels = mylabels, colors=colors,explode = explodevalues, autopct="%1.1f%%", shadow = True)
plt.show() 

Resultado:

Saída do gráfico de pizza no Mathplotlib

O gráfico acima exibe um gráfico de pizza com quatro fatias, com as legendas w, x, y e z. Os valores de explosão definem a distância de cada fatia em relação ao centro do círculo. No gráfico, x está mais longe do centro porque o valor da explosão é maior. O atributo shadow adiciona uma sombra ao gráfico, enquanto autopct define a porcentagem relativa de cada fatia.

#3. Criando um Gráfico de Histograma

Em um histograma, usaremos uma série de intervalos para representar a faixa de valores fornecidos no eixo x. O eixo y, por outro lado, representará as informações de frequência.

Criar um histograma no Matplotlib requer alguns passos pré-definidos, que incluem:

  • Criar intervalos (bins) a partir do conjunto de dados. Pode-se usar a função np.random.normal() para gerar valores aleatórios.
  • Distribuir valores em um intervalo de valores.
  • Contar os valores que caem em cada intervalo específico.
  • Usar a função matplotlib.pyplot.hist() para criar o histograma.

A função hist() aceita diversos parâmetros, como:

x – Representa a sequência da matriz.

bins – Parâmetro opcional que representa intervalos não sobrepostos de variáveis, podendo conter inteiros ou uma sequência String.

range – Define o intervalo superior e inferior dos bins.

align – Controla o alinhamento do histograma (esquerda, direita ou meio).

color – Define a cor das barras.

rwidth – Define a largura relativa das barras em relação ao bin.

log – Define uma escala logarítmica no eixo do histograma.

O exemplo a seguir plota um histograma com os valores definidos.

from matplotlib import pyplot as plt

x = [22, 40, 87, 5, 43, 30, 56,73, 55, 54, 11, 20, 51, 5,  50, 60, 70, 80]

plt.hist(x)
plt.title('Histogram plot example')
plt.xlabel('x axis')
plt.ylabel('frequency')
plt.show()

Resultado:

Saída do gráfico de histograma em Mathplotlib

#4. Gráfico de Linha no Matplotlib

O Matplotlib utiliza sua sub-biblioteca pyplot, que oferece várias funções úteis para sua implementação.

Usamos a função plot(), que é uma função genérica de pyplot para plotar gráficos de linha e outros tipos de gráficos, incluindo gráficos curvos e com várias linhas. A criação desses gráficos depende dos valores passados para o eixo y.

Para plotar, importe matplotlib.pyplot e Numpy. O método plot(x, y) cria o gráfico de linha, passando valores aleatórios para os argumentos x e y.

Além disso, pode-se passar uma variável de legenda que rotula o gráfico. A função title define o título do gráfico, enquanto as funções xlabel e ylabel nomeiam os eixos. Finalmente, a função show() exibe o gráfico.

Exemplo:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 5, 10)

y = 3*x + 2
plt.title('Line plot example')
plt.xlabel('x axis')
plt.ylabel('y axis')
plt.plot(x, y)
plt.show()

Resultado:

Saída do gráfico de linha no Mathplotlib

O atributo np.linspace retorna um conjunto de números uniformemente espaçados em um intervalo específico para os valores x, criando um array de 10 valores no intervalo de 0 a 5. Os valores de y são criados a partir da equação que usa os valores correspondentes de x.

Criando Gráficos de Dispersão

O Matplotlib utiliza o método scatter() para criar este tipo de gráfico. O método aceita os seguintes parâmetros:

matplotlib.pyplot.scatter(x_axis_data, y_axis_data, s=None, c=None, marker=None, cmap=None, vmin=None, vmax=None, alpha=None, linewidths=None, edgecolors=None) 

Os parâmetros x_axis_data e y_axis_data não podem ser deixados em branco, enquanto os demais são opcionais e podem ter o valor None. x_axis_data define um array de dados para o eixo x e y_axis_data define um array de dados para o eixo y.

Um exemplo de gráfico de dispersão no Matplotlib:

import matplotlib.pyplot as plt
 
x =[15, 17, 18, 27, 22, 27, 32, 14, 11, 12, 29, 16]
 
y =[19, 16, 17, 18, 10, 26, 13, 27, 14, 18, 17, 35]
plt.title('Scatter plot example')
plt.xlabel('x variable')
plt.ylabel('y variable')
plt.scatter(x, y, c ="green")
 
# To show the plot
plt.show()

O resultado será:

Saída do gráfico de dispersão em Mathplotlib

O que é subplot() no Matplotlib

A função subplot() pode ser usada para desenhar vários gráficos em uma única figura do Matplotlib. Isso permite a visualização e comparação de vários gráficos na mesma figura.

Essa função retorna uma tupla com três argumentos: linhas e colunas como primeiro e segundo argumento, respectivamente, e o índice do gráfico atual como terceiro argumento.

Linhas e colunas definem o layout do Matplotlib.

Portanto, plt.subplot(2, 1, 1), por exemplo, irá plotar uma figura Matplotlib com duas linhas e uma coluna, sendo este o primeiro gráfico.

Enquanto plt.subplot(2, 1, 2) exibirá um segundo gráfico com duas linhas e uma coluna.

A plotagem desses dois gráficos os cria um em cima do outro, como no exemplo abaixo.

import matplotlib.pyplot as plt
import numpy as np

#plot 1:
x = np.array([2, 4, 6, 8])
y = np.array([3, 6, 9, 12])

plt.subplot(2, 1, 1)
plt.plot(x,y)

#plot 2:
x = np.array([3, 6, 9, 12])
y = np.array([1, 2, 3, 4])

plt.subplot(2, 1, 2)
plt.plot(x,y)

plt.show()

A saída do exemplo acima será semelhante à imagem abaixo.

Usando um exemplo diferente, vamos usar a função subplot para plotar duas figuras com uma linha e duas colunas. Isso exibirá os gráficos lado a lado.

import matplotlib.pyplot as plt
import numpy as np

#plot 1:
x = np.array([2, 4, 6, 8])
y = np.array([3, 6, 9, 12])

plt.subplot(1, 2, 1)
plt.plot(x,y)

#plot 2:
x = np.array([3, 6, 9, 12])
y = np.array([1, 2, 3, 4])

plt.subplot(1, 2, 2)
plt.plot(x,y)

plt.show()

O exemplo acima exibirá o seguinte resultado.

Bem, isso foi interessantemente interativo, não acha? 😃

Considerações Finais

Matplotlib é uma biblioteca de visualização essencial no Python. Sua interatividade e facilidade de uso, mesmo para iniciantes, a tornam uma ferramenta poderosa para plotagem em Python.

Este artigo abordou exemplos dos diversos gráficos que o Matplotlib pode criar, incluindo gráficos de pizza, gráficos de barras, histogramas e gráficos de dispersão.

Obviamente, existem outras bibliotecas no Python que cientistas de dados e especialistas em Machine Learning podem usar para criar visualizações.

Você pode explorar ainda mais gráficos e funções do Matplotlib.

Bons plots! 📉📊