O Matplotlib oferece ferramentas poderosas para criar visualizações, e personalizar os tamanhos dos subplots é fundamental para uma comunicação eficaz. Este artigo explora três métodos para criar subplots com tamanhos variados no Matplotlib, fornecendo exemplos e explicações claras para cada um.
Sumário
- Usando
gridspec
para Layouts de Subplots Flexíveis - Aproveitando
gridspec_kw
para Controle Conciso - Posicionamento Preciso com
subplot2grid
Usando gridspec
para Layouts de Subplots Flexíveis
O módulo matplotlib.gridspec
fornece a abordagem mais flexível para criar subplots de tamanhos variados. Ele permite que você defina uma grade e, em seguida, atribua subplots a regiões específicas dessa grade, controlando seus tamanhos relativos usando height_ratios
e width_ratios
.
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
fig = plt.figure(figsize=(10, 6))
gs = gridspec.GridSpec(nrows=2, ncols=2, height_ratios=[2, 1], width_ratios=[1, 2])
ax1 = fig.add_subplot(gs[0, 0])
ax2 = fig.add_subplot(gs[0, 1])
ax3 = fig.add_subplot(gs[1, :]) # Abrangendo ambas as colunas
ax1.plot([1, 2, 3], [4, 5, 6])
ax2.plot([1, 2, 3], [6, 4, 5])
ax3.plot([1, 2, 3, 4, 5], [2, 4, 1, 3, 5])
plt.tight_layout()
plt.show()
Este código cria uma grade 2×2 com a linha superior duas vezes mais alta que a linha inferior e a coluna direita duas vezes mais larga que a esquerda. Cada subplot é então adicionado à sua área designada.
Aproveitando gridspec_kw
para Controle Conciso
Para layouts mais simples, o argumento gridspec_kw
dentro de plt.subplots()
oferece uma alternativa mais concisa. Ele integra diretamente a funcionalidade gridspec sem exigir a criação explícita de um objeto gridspec
.
import matplotlib.pyplot as plt
fig, axes = plt.subplots(2, 2, figsize=(10, 6), gridspec_kw={'height_ratios': [2, 1], 'width_ratios': [1, 2]})
axes[0, 0].plot([1, 2, 3], [4, 5, 6])
axes[0, 1].plot([1, 2, 3], [6, 4, 5])
axes[1, 0].plot([1, 2, 3], [2, 4, 1])
axes[1, 1].plot([1, 2, 3], [5, 3, 1])
plt.tight_layout()
plt.show()
Isso alcança um resultado semelhante ao exemplo gridspec
, mas com uma sintaxe mais limpa. Observe que cada subplot aqui ocupa uma única célula; abranger várias células requer a abordagem gridspec
mais flexível.
Posicionamento Preciso com subplot2grid
A função subplot2grid
fornece controle preciso sobre o posicionamento do subplot usando índices de linha e coluna, e atributos rowspan
e colspan
para definir o tamanho e a posição de cada subplot dentro da grade.
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(10, 6))
ax1 = plt.subplot2grid((2, 2), (0, 0), rowspan=1, colspan=1)
ax2 = plt.subplot2grid((2, 2), (0, 1), rowspan=1, colspan=2)
ax3 = plt.subplot2grid((2, 2), (1, 0), rowspan=1, colspan=2)
ax1.plot([1, 2, 3], [4, 5, 6])
ax2.plot([1, 2, 3], [6, 4, 5])
ax3.plot([1, 2, 3, 4, 5], [2, 4, 1, 3, 5])
plt.tight_layout()
plt.show()
Embora poderosa, subplot2grid
pode se tornar menos legível para layouts complexos. Escolha o método mais adequado às suas necessidades: gridspec
para flexibilidade, gridspec_kw
para layouts simples e concisos e subplot2grid
para controle preciso sobre as posições individuais dos subplots.
Lembre-se de sempre usar plt.tight_layout()
para evitar elementos sobrepostos e garantir uma aparência limpa e profissional.