Como Ajustar e Alterar o Tamanho de Figuras no Matplotlib
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.
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:
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.
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.
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()
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.
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()
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.
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()
Este tipo de gráfico nos permite fazer comparações diretas entre as categorias e é extremamente útil em apresentações e relatórios.
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()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()
Com subplots, podemos facilmente comparar como diferentes tipos de gráficos representam o mesmo conjunto de dados.
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()
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()
Parâmetros importantes:
dpi: Define a resolução (300 dpi é padrão para publicações)bbox_inches='tight': Remove espaços em branco extrasGrá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()
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 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.
Manipule dados e construa visualizações interativas com as ferramentas mais utilizadas por analistas de dados do mundo.
Comece agora
Aprenda a programar e desenvolva soluções para o seu trabalho com Python para alcançar novas oportunidades profissionais. Aqui na Asimov você encontra:
Comentários
30xp