Introdução
Este tutorial demonstrará como criar uma grade de imagens usando ImageGrid do Matplotlib. Criaremos uma grade de imagens 2x2 e exploraremos várias maneiras de adicionar barras de cores à grade.
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 e dados necessários
Primeiramente, precisamos importar as bibliotecas e os dados necessários para criar nossa grade. Usaremos matplotlib.pyplot para plotagem, cbook para obter um conjunto de dados de exemplo e ImageGrid para criar nossa grade.
import matplotlib.pyplot as plt
from matplotlib import cbook
from mpl_toolkits.axes_grid1 import ImageGrid
## Get sample data
Z = cbook.get_sample_data("axes_grid/bivariate_normal.npy") ## 15x15 array
extent = (-3, 4, -4, 3)
Criar uma grade de imagens 2x2 com uma única barra de cores
Nossa primeira grade será uma grade de imagens 2x2 com uma única barra de cores. Usaremos a função ImageGrid para criar a grade e especificar o número de linhas e colunas que desejamos. Também especificaremos a localização da barra de cores e definiremos share_all como True para compartilhar a barra de cores em todas as imagens.
## Create a grid of 2x2 images with a single colorbar
grid = ImageGrid(
fig, ## Figure object
141, ## Location of subplot
nrows_ncols=(2, 2), ## Number of rows and columns
axes_pad=0.0, ## Padding between axes
label_mode="L", ## Label mode
share_all=True, ## Share colorbar across all images
cbar_location="top", ## Location of colorbar
cbar_mode="single" ## Colorbar mode
)
## Plot images on grid
for ax in grid:
im = ax.imshow(Z, extent=extent)
## Add colorbar to grid
grid.cbar_axes[0].colorbar(im)
for cax in grid.cbar_axes:
cax.tick_params(labeltop=False)
Criar uma grade de imagens 2x2 com cada imagem tendo sua própria barra de cores
Nossa próxima grade será uma grade de imagens 2x2 com cada imagem tendo sua própria barra de cores. Usaremos a função ImageGrid novamente, mas desta vez definiremos cbar_mode como "each" para especificar que cada imagem deve ter sua própria barra de cores.
## Create a grid of 2x2 images with each image having its own colorbar
grid = ImageGrid(
fig, ## Figure object
142, ## Location of subplot
nrows_ncols=(2, 2), ## Number of rows and columns
axes_pad=0.1, ## Padding between axes
label_mode="1", ## Label mode
share_all=True, ## Share colorbar across all images
cbar_location="top", ## Location of colorbar
cbar_mode="each", ## Colorbar mode
cbar_size="7%", ## Size of colorbar
cbar_pad="2%" ## Padding between colorbar and images
)
## Plot images on grid and add colorbars
for ax, cax in zip(grid, grid.cbar_axes):
im = ax.imshow(Z, extent=extent)
cax.colorbar(im)
cax.tick_params(labeltop=False)
Criar uma grade de imagens 2x2 com cada imagem tendo sua própria barra de cores e uma faixa de cores diferente
Nossa grade final também será uma grade de imagens 2x2 com cada imagem tendo sua própria barra de cores, mas desta vez usaremos uma faixa de cores diferente para cada imagem. Definiremos a faixa de cores usando vmin e vmax ao plotar cada imagem.
## Create a grid of 2x2 images with each image having its own colorbar and a different colorbar range
grid = ImageGrid(
fig, ## Figure object
143, ## Location of subplot
nrows_ncols=(2, 2), ## Number of rows and columns
axes_pad=(0.45, 0.15), ## Padding between axes
label_mode="1", ## Label mode
share_all=True, ## Share colorbar across all images
cbar_location="right", ## Location of colorbar
cbar_mode="each", ## Colorbar mode
cbar_size="7%", ## Size of colorbar
cbar_pad="2%" ## Padding between colorbar and images
)
## Plot images on grid and add colorbars
limits = ((0, 1), (-2, 2), (-1.7, 1.4), (-1.5, 1)) ## Different colorbar ranges
for ax, cax, vlim in zip(grid, grid.cbar_axes, limits):
im = ax.imshow(Z, extent=extent, vmin=vlim[0], vmax=vlim[1])
cb = cax.colorbar(im)
cb.set_ticks((vlim[0], vlim[1]))
Resumo
Neste tutorial, aprendemos como criar uma grade de imagens usando ImageGrid do Matplotlib. Exploramos diferentes maneiras de adicionar barras de cores à grade, incluindo o uso de uma única barra de cores para todas as imagens, dando a cada imagem sua própria barra de cores e dando a cada imagem sua própria barra de cores com uma faixa de cores diferente.