GridSpecs Aninhados em Matplotlib

Beginner

This tutorial is from open-source community. Access the source code

Introdução

Neste laboratório, você aprenderá como usar .GridSpecs aninhados no Matplotlib para criar uma grade de subplots com tamanhos variados. Isso é útil quando você deseja criar um layout complexo de gráficos e ter controle sobre o tamanho e o espaçamento de cada gráfico.

Dicas para a VM

Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook e acessar o Jupyter Notebook para praticar.

Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.

Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão, e resolveremos o problema prontamente para você.

Importar Bibliotecas

Primeiramente, precisamos importar as bibliotecas necessárias. Usaremos matplotlib.pyplot para criar os gráficos e numpy para gerar alguns dados para plotar.

import matplotlib.pyplot as plt
import numpy as np

Criar Dados

Nesta etapa, criaremos alguns dados para plotar. Usaremos a função squiggle_xy para gerar algumas ondas senoidais e cossenoidais com diferentes frequências.

def squiggle_xy(a, b, c, d):
    i = np.arange(0.0, 2*np.pi, 0.05)
    return np.sin(i*a)*np.cos(i*b), np.sin(i*c)*np.cos(i*d)

Criar a Figura e a Grelha Externa

Em seguida, criaremos a figura e a grelha externa usando a função add_gridspec. Criaremos uma grelha 4x4 sem espaçamento entre os subplots.

fig = plt.figure(figsize=(8, 8))
outer_grid = fig.add_gridspec(4, 4, wspace=0, hspace=0)

Criar as Grelhas Internas e Subplots

Nesta etapa, criaremos as grelhas internas e subplots usando .GridSpecs aninhados. Iremos iterar por cada célula na grelha externa e criar uma grelha 3x3 para cada célula.

for a in range(4):
    for b in range(4):
        ## gridspec inside gridspec
        inner_grid = outer_grid[a, b].subgridspec(3, 3, wspace=0, hspace=0)
        axs = inner_grid.subplots()  ## Create all subplots for the inner grid.
        for (c, d), ax in np.ndenumerate(axs):
            ax.plot(*squiggle_xy(a + 1, b + 1, c + 1, d + 1))
            ax.set(xticks=[], yticks=[])

Mostrar Apenas os Spines Externos

Nesta etapa, removeremos os spines (bordas) para os subplots internos e mostraremos apenas os spines externos. Isso fará com que o gráfico pareça mais limpo.

for ax in fig.get_axes():
    ss = ax.get_subplotspec()
    ax.spines.top.set_visible(ss.is_first_row())
    ax.spines.bottom.set_visible(ss.is_last_row())
    ax.spines.left.set_visible(ss.is_first_col())
    ax.spines.right.set_visible(ss.is_last_col())

Exibir o Gráfico

Finalmente, exibiremos o gráfico usando a função show().

plt.show()

Resumo

Neste laboratório, você aprendeu como usar .GridSpecs aninhados em Matplotlib para criar uma grade de subplots com tamanhos variados. Também aprendemos como gerar dados usando numpy e como personalizar os spines (bordas) dos subplots. Com este conhecimento, você pode criar layouts complexos de gráficos com controle preciso sobre seu tamanho e espaçamento.