Plotando Imagens Não Uniformes 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 a classe NonUniformImage na biblioteca Matplotlib do Python. NonUniformImage permite que os usuários plotem imagens com posições de pixels não uniformes.

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

Antes de criar um NonUniformImage, precisamos importar as bibliotecas necessárias. Neste exemplo, usaremos numpy e matplotlib.

import matplotlib.pyplot as plt
import numpy as np

from matplotlib import cm
from matplotlib.image import NonUniformImage

Criar Arrays Lineares e Não Lineares

Precisamos criar dois arrays, um com valores lineares e outro com valores não lineares. Esses arrays serão usados para criar nosso NonUniformImage.

## Array x linear para centros de células:
x = np.linspace(-4, 4, 9)

## Array x altamente não linear:
x2 = x**3

y = np.linspace(-4, 4, 9)

z = np.sqrt(x[np.newaxis, :]**2 + y[:, np.newaxis]**2)

Criar Subplots e NonUniformImage

Agora, criamos subplots e adicionamos o NonUniformImage a cada um deles. Criaremos quatro subplots, dois com interpolação 'nearest' e dois com interpolação 'bilinear'. O argumento de palavra-chave interpolation define o tipo de interpolação usado para exibir a imagem.

## Criar subplots
fig, axs = plt.subplots(nrows=2, ncols=2, layout='constrained')
fig.suptitle('Classe NonUniformImage', fontsize='large')

## Interpolação Nearest
ax = axs[0, 0]
im = NonUniformImage(ax, interpolation='nearest', extent=(-4, 4, -4, 4), cmap=cm.Purples)
im.set_data(x, y, z)
ax.add_image(im)
ax.set_xlim(-4, 4)
ax.set_ylim(-4, 4)
ax.set_title('nearest')

ax = axs[0, 1]
im = NonUniformImage(ax, interpolation='nearest', extent=(-64, 64, -4, 4), cmap=cm.Purples)
im.set_data(x2, y, z)
ax.add_image(im)
ax.set_xlim(-64, 64)
ax.set_ylim(-4, 4)
ax.set_title('nearest')

## Interpolação Bilinear
ax = axs[1, 0]
im = NonUniformImage(ax, interpolation='bilinear', extent=(-4, 4, -4, 4), cmap=cm.Purples)
im.set_data(x, y, z)
ax.add_image(im)
ax.set_xlim(-4, 4)
ax.set_ylim(-4, 4)
ax.set_title('bilinear')

ax = axs[1, 1]
im = NonUniformImage(ax, interpolation='bilinear', extent=(-64, 64, -4, 4), cmap=cm.Purples)
im.set_data(x2, y, z)
ax.add_image(im)
ax.set_xlim(-64, 64)
ax.set_ylim(-4, 4)
ax.set_title('bilinear')

plt.show()

Interpretação dos Resultados

Os subplots exibirão dois tipos diferentes de interpolação, 'nearest' e 'bilinear'. A interpolação 'nearest' exibirá o valor do pixel do vizinho mais próximo, enquanto a interpolação 'bilinear' exibirá a média ponderada dos quatro vizinhos mais próximos.

Resumo

NonUniformImage é uma ferramenta útil para plotar imagens com posições de pixel não uniformes. Este laboratório forneceu um guia passo a passo sobre como usar NonUniformImage na biblioteca Matplotlib do Python, incluindo a importação das bibliotecas necessárias, a criação de arrays lineares e não lineares, a criação de subplots e NonUniformImage, e a interpretação dos resultados.