Tamanho de fonte
Alto contraste
Altura de linha
Entrar Cadastrar

Como Criar Figuras com Python e Matplotlib: guia completo

Avatar de Ana Maria Gomes Ana Maria Gomes
11 minutos de leitura 01/03/2024 • Atualizado 4 dias atrás 5xp

A biblioteca Matplotlib é uma das ferramentas mais populares para visualização de dados em Python. Se você já tem familiaridade com essa biblioteca, sabe que ela oferece uma vasta gama de funcionalidades que permitem a criação de gráficos complexos e detalhados.

Neste tutorial, você aprenderá a criar figuras e visualizações complexas com Matplotlib, explorando desde a estrutura básica de uma figura até técnicas avançadas como múltiplos eixos, subplots personalizados, diferentes tipos de gráficos e customizações detalhadas. Vamos revisitar alguns conceitos avançados de Matplotlib, como criar gráficos com Python e explorar como eles podem ser aplicados na análise de dados.

Entendendo a Estrutura de uma Figura Matplotlib

Antes de começarmos a criar nossos gráficos, é fundamental entender a estrutura de uma figura no Matplotlib. Uma figura é o container de nível mais alto que engloba todos os elementos da sua visualização. Ela é composta por diversos componentes hierárquicos:

  • Figure (Figura): o container principal que pode conter um ou mais eixos;
  • Axes (Eixos): a área onde os dados são plotados, contendo os eixos X e Y;
  • Axis (Eixo): os eixos X e Y propriamente ditos, com suas escalas e marcações;
  • Elementos visuais: títulos, legendas, rótulos, linhas, marcadores e outros componentes gráficos.

A manipulação desses elementos é feita através de uma interface orientada a objetos, que oferece controle total sobre a aparência do gráfico. Essa abordagem permite criar visualizações profissionais e altamente personalizadas.

Criando sua Primeira Figura

Ao criar uma figura, você pode definir suas propriedades iniciais. Por exemplo, você pode especificar o tamanho da figura usando o parâmetro figsize (medido em polegadas):

import matplotlib.pyplot as plt
import numpy as np

# Criando uma figura com tamanho específico
fig, ax = plt.subplots(figsize=(10, 6))

💡 Dica: para um guia completo sobre como ajustar e otimizar o tamanho de suas figuras no Matplotlib, incluindo técnicas de redimensionamento dinâmico e exportação em alta resolução, confira nosso tutorial especializado sobre ajuste de tamanho de figuras.

Criando seu Primeiro Gráfico de Linhas com Múltiplos Eixos

Uma das técnicas mais úteis ao trabalhar com dados de escalas diferentes é a criação de múltiplos eixos Y que compartilham o mesmo eixo X. Isso é especialmente valioso quando você precisa comparar variáveis com unidades ou magnitudes distintas.

import matplotlib.pyplot as plt
import numpy as np

# Dados
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.log(x + 1)

# Criando uma figura e um conjunto de subplots
fig, ax1 = plt.subplots()

# Gráfico de linha para y1
ax1.plot(x, y1, 'g-')
ax1.set_xlabel('Eixo X (x)')
ax1.set_ylabel('Sen(x)', color='g')

# Criando um segundo eixo Y que compartilha o mesmo eixo X
ax2 = ax1.twinx()
ax2.plot(x, y2, 'b-')
ax2.set_ylabel('log(x+1)', color='b')

plt.title('Gráfico de Linhas com Múltiplos Eixos')
plt.show()
Gráfico de linhas com múltiplos eixos

Neste exemplo, criamos dois conjuntos de eixos (ax1 e ax2) que compartilham o mesmo eixo X. Isso nos permite plotar y1 e y2 com escalas diferentes no mesmo gráfico.

Visualizando Distribuições com Histogramas

Histogramas são uma excelente maneira de visualizar a distribuição de um conjunto de dados. Eles permitem identificar rapidamente padrões como centralidade, dispersão e presença de outliers.

# Gerando dados aleatórios
data = np.random.randn(1000)

# Criando o histograma
plt.hist(data, bins=30, alpha=0.5, color='blue', edgecolor='black')

# Adicionando títulos e rótulos
plt.title('Histograma de uma Amostra Aleatória')
plt.xlabel('Valor')
plt.ylabel('Frequência')

plt.show()
Gráfico de histograma de uma amostra aleatória

O histograma nos permite ver rapidamente onde a maior parte dos dados está concentrada e se existem outliers significativos. A adição da curva normal ajuda a avaliar se os dados seguem uma distribuição normal.

Criando Gráficos de Barras para Comparação de Dados Categóricos

Gráficos de barras são ideais para comparar quantidades entre diferentes categorias. Vamos criar um exemplo mais elaborado com barras horizontais e valores exibidos.

# Categorias e valores
categorias = ['Categoria A', 'Categoria B', 'Categoria C']
valores = [10, 20, 30]

# Criando o gráfico de barras
plt.bar(categorias, valores, color=['red', 'green', 'blue'])

# Adicionando títulos e rótulos
plt.title('Gráfico de Barras para Dados Categóricos')
plt.xlabel('Categorias')
plt.ylabel('Valores')

plt.show()
Gráfico de barras para dados categóricos

Este tipo de gráfico nos permite fazer comparações diretas entre as categorias e é extremamente útil em apresentações e relatórios.

Gráfico de Barras Agrupadas

Para comparar múltiplas séries de dados categóricos simultaneamente:

# Dados para comparação
categorias = ['Produto A', 'Produto B', 'Produto C']
vendas_2023 = [25, 32, 28]
vendas_2024 = [30, 38, 35]

# Posições das barras
x = np.arange(len(categorias))
width = 0.35  # Largura das barras

# Criando a figura
fig, ax = plt.subplots(figsize=(10, 6))

# Criando barras agrupadas
bars1 = ax.bar(x - width/2, vendas_2023, width, label='2023', 
               color='lightcoral', edgecolor='black')
bars2 = ax.bar(x + width/2, vendas_2024, width, label='2024', 
               color='lightgreen', edgecolor='black')

# Personalizações
ax.set_xlabel('Produtos', fontsize=12)
ax.set_ylabel('Vendas (milhares)', fontsize=12)
ax.set_title('Comparação de Vendas: 2023 vs 2024', fontsize=14, fontweight='bold')
ax.set_xticks(x)
ax.set_xticklabels(categorias)
ax.legend(fontsize=11)
ax.grid(axis='y', alpha=0.3)

plt.tight_layout()
plt.show()

Utilizando Subplots para Comparar Múltiplos Gráficos

Subplots são uma forma eficaz de comparar diferentes visualizações de dados lado a lado ou organizadas em uma grade. Isso permite análises comparativas e apresentações mais completas.

# Dados para os gráficos
x = np.linspace(0, 2 * np.pi, 400)
y = np.sin(x ** 2)

# Criando uma figura com 2 subplots
fig, (ax1, ax2) = plt.subplots(1, 2)
fig.suptitle('Comparando Gráficos com Subplots')

# Primeiro subplot
ax1.plot(x, y)
ax1.set_title('Gráfico de Linhas')

# Segundo subplot
ax2.scatter(x, y)
ax2.set_title('Gráfico de Dispersão')

plt.show()
Gráficos de linhas e dispersão com subplots

Com subplots, podemos facilmente comparar como diferentes tipos de gráficos representam o mesmo conjunto de dados.

Personalizando Estilos de Linha e Marcadores

O Matplotlib oferece diversas opções para personalizar a aparência das linhas e marcadores nos seus gráficos:

import numpy as np
import matplotlib.pyplot as plt

# Dados
x = np.linspace(0, 10, 50)

# Criando figura
fig, ax = plt.subplots(figsize=(12, 6))

# Diferentes estilos de linha
ax.plot(x, np.sin(x), 'b-', linewidth=2, label='Linha sólida')
ax.plot(x, np.sin(x) + 1, 'r--', linewidth=2, label='Linha tracejada')
ax.plot(x, np.sin(x) + 2, 'g-.', linewidth=2, label='Linha traço-ponto')
ax.plot(x, np.sin(x) + 3, 'm:', linewidth=3, label='Linha pontilhada')

# Linhas com marcadores
ax.plot(x, np.sin(x) + 4, 'co-', linewidth=2, markersize=8,
        markerfacecolor='yellow', markeredgecolor='black', markeredgewidth=2,
        label='Linha com marcadores circulares')

ax.plot(x, np.sin(x) + 5, 'ks-', linewidth=2, markersize=6,
        markerfacecolor='red', alpha=0.7, label='Linha com marcadores quadrados')

# Configurações finais
ax.set_title('Estilos de Linhas e Marcadores', fontsize=14, fontweight='bold')
ax.set_xlabel('X', fontsize=12)
ax.set_ylabel('Y', fontsize=12)
ax.legend(loc='best', fontsize=10)
ax.grid(True, alpha=0.3)

plt.tight_layout()
plt.show()
Gráficos com estilos de linhas e marcadores

Salvando Figuras em Alta Resolução

Após criar suas visualizações, você pode salvá-las em diversos formatos com alta qualidade:

# Criando uma figura exemplo
fig, ax = plt.subplots(figsize=(10, 6))
x = np.linspace(0, 10, 100)
ax.plot(x, np.sin(x), linewidth=2)
ax.set_title('Exemplo de Figura para Exportação', fontsize=14)
ax.grid(True, alpha=0.3)

# Salvando em diferentes formatos
fig.savefig('figura_alta_resolucao.png', dpi=300, bbox_inches='tight')
fig.savefig('figura_vetorial.pdf', bbox_inches='tight')
fig.savefig('figura_vetorial.svg', bbox_inches='tight')

plt.show()
Gráfico de figura para exportação

Parâmetros importantes:

  • dpi: Define a resolução (300 dpi é padrão para publicações)
  • bbox_inches='tight': Remove espaços em branco extras
  • Formatos disponíveis: PNG, PDF, SVG, EPS, JPG, entre outros

Trabalhando com Gráficos de Dispersão Avançados

Gráficos de dispersão podem ser enriquecidos com informações adicionais como tamanho e cor dos pontos:

# Gerando dados
np.random.seed(42)
n = 100
x = np.random.rand(n) * 100
y = np.random.rand(n) * 100
colors = np.random.rand(n)
sizes = np.random.rand(n) * 1000

# Criando o gráfico
fig, ax = plt.subplots(figsize=(10, 8))

scatter = ax.scatter(x, y, c=colors, s=sizes, alpha=0.6, 
                     cmap='viridis', edgecolors='black', linewidth=1)

# Adicionando barra de cores
cbar = plt.colorbar(scatter, ax=ax)
cbar.set_label('Intensidade', fontsize=12)

# Configurações
ax.set_title('Gráfico de Dispersão Multidimensional', fontsize=14, fontweight='bold')
ax.set_xlabel('Variável X', fontsize=12)
ax.set_ylabel('Variável Y', fontsize=12)
ax.grid(True, alpha=0.3)

plt.tight_layout()
plt.show()
Gráfico de dispersão multidimensional

Conclusão

Matplotlib é uma ferramenta do Python extremamente versátil que, quando bem dominada, pode elevar a qualidade da sua análise de dados a outro nível. Neste tutorial, exploramos:

  • A estrutura hierárquica de figuras e eixos no Matplotlib;
  • Criação de gráficos com múltiplos eixos para dados de escalas diferentes;
  • Visualizações de distribuições com histogramas personalizados;
  • Gráficos de barras simples e agrupados para dados categóricos;
  • Uso eficiente de subplots para comparações e dashboards;
  • Personalização avançada de estilos de linhas e marcadores;
  • Técnicas de anotação e destaque de informações;
  • Exportação de figuras em alta resolução para publicações.

A prática é essencial para aprimorar suas habilidades, então não hesite em experimentar com diferentes tipos de gráficos e configurações. Lembre-se de que uma boa visualização pode ser a chave para revelar insights valiosos escondidos nos seus dados.

Trilha Análise e Visualização de Dados

Manipule dados e construa visualizações interativas com as ferramentas mais utilizadas por analistas de dados do mundo.

Comece agora
Imagem de um notebook

Cursos de programação gratuitos com certificado

Aprenda a programar e desenvolva soluções para o seu trabalho com Python para alcançar novas oportunidades profissionais. Aqui na Asimov você encontra:

  • Conteúdos gratuitos
  • Projetos práticos
  • Certificados
  • +20 mil alunos e comunidade exclusiva
  • Materiais didáticos e download de código
Inicie agora

Comentários

30xp
Comentar
Faça parte da discussão Crie sua conta gratuita e compartilhe
sua opinião nos comentários
Entre para a Asimov