Introdução
Na visualização de dados, os mapas de cores (colormaps) são usados para representar dados numéricos através de cores. No entanto, por vezes, a distribuição dos dados pode ser não linear, o que pode dificultar a percepção dos detalhes dos dados. Em tais casos, a normalização do mapa de cores (colormap normalization) pode ser usada para mapear mapas de cores em dados de forma não linear, ajudando a visualizar os dados com mais precisão. O Matplotlib fornece vários métodos de normalização, incluindo SymLogNorm e AsinhNorm, que podem ser usados para normalizar mapas de cores. Este laboratório demonstrará como usar SymLogNorm e AsinhNorm para mapear mapas de cores em dados não lineares.
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 as Bibliotecas Necessárias
Nesta etapa, importaremos as bibliotecas necessárias, incluindo Matplotlib, NumPy e as cores do Matplotlib.
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.colors as colors
Criar Dados Sintéticos
Nesta etapa, criaremos um conjunto de dados sintéticos consistindo em duas "corcovas" (humps), uma negativa e outra positiva, com a corcova positiva tendo uma amplitude oito vezes maior que a corcova negativa. Em seguida, aplicaremos SymLogNorm para visualizar os dados.
def rbf(x, y):
return 1.0 / (1 + 5 * ((x ** 2) + (y ** 2)))
N = 200
gain = 8
X, Y = np.mgrid[-3:3:complex(0, N), -2:2:complex(0, N)]
Z1 = rbf(X + 0.5, Y + 0.5)
Z2 = rbf(X - 0.5, Y - 0.5)
Z = gain * Z1 - Z2
shadeopts = {'cmap': 'PRGn', 'shading': 'gouraud'}
colormap = 'PRGn'
lnrwidth = 0.5
Aplicar SymLogNorm
Nesta etapa, aplicaremos SymLogNorm aos dados sintéticos e visualizaremos os resultados.
fig, ax = plt.subplots(2, 1, sharex=True, sharey=True)
pcm = ax[0].pcolormesh(X, Y, Z,
norm=colors.SymLogNorm(linthresh=lnrwidth, linscale=1,
vmin=-gain, vmax=gain, base=10),
**shadeopts)
fig.colorbar(pcm, ax=ax[0], extend='both')
ax[0].text(-2.5, 1.5, 'symlog')
pcm = ax[1].pcolormesh(X, Y, Z, vmin=-gain, vmax=gain,
**shadeopts)
fig.colorbar(pcm, ax=ax[1], extend='both')
ax[1].text(-2.5, 1.5, 'linear')
plt.show()
Aplicar AsinhNorm
Nesta etapa, aplicaremos AsinhNorm aos dados sintéticos e visualizaremos os resultados.
fig, ax = plt.subplots(2, 1, sharex=True, sharey=True)
pcm = ax[0].pcolormesh(X, Y, Z,
norm=colors.SymLogNorm(linthresh=lnrwidth, linscale=1,
vmin=-gain, vmax=gain, base=10),
**shadeopts)
fig.colorbar(pcm, ax=ax[0], extend='both')
ax[0].text(-2.5, 1.5, 'symlog')
pcm = ax[1].pcolormesh(X, Y, Z,
norm=colors.AsinhNorm(linear_width=lnrwidth,
vmin=-gain, vmax=gain),
**shadeopts)
fig.colorbar(pcm, ax=ax[1], extend='both')
ax[1].text(-2.5, 1.5, 'asinh')
plt.show()
Resumo
Neste laboratório, aprendemos como usar SymLogNorm e AsinhNorm para mapear mapas de cores em dados não lineares. Ao aplicar esses métodos de normalização, podemos visualizar os dados com mais precisão e discernir os detalhes dos dados com mais facilidade.