Normalização de Colormaps Matplotlib

Beginner

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

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.