Introdução
Este tutorial irá guiá-lo através do processo de criação de um conjunto de imagens com um único mapa de cores (colormap), norma (norm) e barra de cores (colorbar) na biblioteca Matplotlib do Python. Você aprenderá como gerar dados, definir escalas de cores e atualizar imagens para responder a mudanças na norma de outras imagens.
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: numpy e matplotlib. Também definiremos uma semente aleatória para garantir a reprodutibilidade.
import matplotlib.pyplot as plt
import numpy as np
Gerar Dados e Criar Subplots
Em seguida, geraremos dados para nossas imagens. Criaremos uma grade 3x2 de subplots, com cada subplot contendo um array de valores gerado aleatoriamente.
np.random.seed(19680801)
Nr = 3
Nc = 2
fig, axs = plt.subplots(Nr, Nc)
fig.suptitle('Multiple images')
images = []
for i in range(Nr):
for j in range(Nc):
## Generate data with a range that varies from one plot to the next.
data = ((1 + i + j) / 10) * np.random.rand(10, 20)
images.append(axs[i, j].imshow(data))
axs[i, j].label_outer()
Definir Escala de Cores e Criar Colorbar
Agora, definiremos a escala de cores para nossas imagens e criaremos uma colorbar para mostrar a faixa de valores. Encontraremos os valores mínimo e máximo para todas as imagens e normalizaremos a escala de cores de acordo.
vmin = min(image.get_array().min() for image in images)
vmax = max(image.get_array().max() for image in images)
norm = colors.Normalize(vmin=vmin, vmax=vmax)
for im in images:
im.set_norm(norm)
fig.colorbar(images[0], ax=axs, orientation='horizontal', fraction=.1)
Atualizar Imagens
Finalmente, atualizaremos as imagens para responder a mudanças na norma de outras imagens. Isso nos permitirá alterar o colormap e a escala de cores de uma imagem e fazer com que todas as outras se atualizem de acordo.
def update(changed_image):
for im in images:
if (changed_image.get_cmap() != im.get_cmap()
or changed_image.get_clim() != im.get_clim()):
im.set_cmap(changed_image.get_cmap())
im.set_clim(changed_image.get_clim())
for im in images:
im.callbacks.connect('changed', update)
Resumo
Neste laboratório, aprendemos como criar um conjunto de imagens com um único colormap, norm e colorbar na biblioteca Matplotlib do Python. Geramos dados, definimos escalas de cores e atualizamos imagens para responder a mudanças na norma de outras imagens. Esta é uma técnica útil para visualizar múltiplos conjuntos de dados com a mesma escala de cores e colormap.