Data Visualization

Dominando Tamanhos de Subplots no Matplotlib: Três Métodos Poderosos

Spread the love

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

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.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *