Transformação de Grade Personalizada com Matplotlib

Beginner

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

Introdução

Este laboratório fornece um guia passo a passo sobre como usar GridHelperCurveLinear para definir grades e linhas de marcação (ticklines) personalizadas, aplicando uma transformação na grade. Usaremos a biblioteca Matplotlib do Python para criar grades e linhas de marcação personalizadas.

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 às limitações do 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 as Bibliotecas Necessárias

O primeiro passo é importar as bibliotecas necessárias, incluindo matplotlib.pyplot, numpy, ExtremeFinderSimple, MaxNLocator e GridHelperCurveLinear.

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.axisartist.axislines import Axes
from mpl_toolkits.axisartist.grid_finder import (ExtremeFinderSimple, MaxNLocator)
from mpl_toolkits.axisartist.grid_helper_curvelinear import GridHelperCurveLinear

Definir Funções de Transformação

O segundo passo é definir as funções de transformação. Neste exemplo, usaremos a função tr para transformar os valores do eixo x e deixar os valores do eixo y inalterados. A função inv_tr será usada para inverter a transformação.

def tr(x, y):
    return np.sign(x)*abs(x)**.5, y

def inv_tr(x, y):
    return np.sign(x)*x**2, y

Definir GridHelperCurveLinear

O terceiro passo é definir a instância GridHelperCurveLinear. Usaremos as funções de transformação definidas no Passo 2 para transformar a grade. Também definiremos grid_locator1 e grid_locator2 como MaxNLocator(nbins=6) para aumentar a densidade dos ticks.

grid_helper = GridHelperCurveLinear(
    (tr, inv_tr),
    extreme_finder=ExtremeFinderSimple(20, 20),
    grid_locator1=MaxNLocator(nbins=6), grid_locator2=MaxNLocator(nbins=6))

Definir Eixos e Exibir Imagem

O quarto passo é definir os eixos usando a instância grid_helper criada no Passo 3. Também exibiremos uma imagem usando a função imshow.

ax1 = fig.add_subplot(axes_class=Axes, grid_helper=grid_helper)
ax1.imshow(np.arange(25).reshape(5, 5), vmax=50, cmap=plt.cm.gray_r, origin="lower")

Criar a Figura

O passo final é criar a figura usando a função plt.figure. Definiremos o tamanho da figura como (7, 4) e chamaremos a função curvelinear_test1 criada nos Passos 2-4.

if __name__ == "__main__":
    fig = plt.figure(figsize=(7, 4))
    curvelinear_test1(fig)
    plt.show()

Resumo

Neste laboratório, aprendemos como usar o GridHelperCurveLinear para definir grades e linhas de marcação (ticklines) personalizadas, aplicando uma transformação na grade. Usamos a biblioteca Matplotlib do Python para criar uma grade e linhas de marcação personalizadas para uma matriz 5x5 exibida nos eixos.