Geração de Imagens com Colormap em Matplotlib

Beginner

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

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.