Normalización de mapas de colores de Matplotlib

Beginner

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

Introducción

En la visualización de datos, las mapas de colores se utilizan para representar datos numéricos a través del color. Sin embargo, a veces la distribución de los datos puede ser no lineal, lo que puede dificultar la distinción de los detalles de los datos. En tales casos, la normalización de mapas de colores se puede utilizar para mapear mapas de colores sobre datos de manera no lineal para ayudar a visualizar los datos con mayor precisión. Matplotlib proporciona varios métodos de normalización, incluyendo SymLogNorm y AsinhNorm, que se pueden utilizar para normalizar mapas de colores. Esta práctica demostrará cómo utilizar SymLogNorm y AsinhNorm para mapear mapas de colores sobre datos no lineales.

Consejos sobre la VM

Una vez finalizada la inicialización de la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.

A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.

Importar las bibliotecas necesarias

En este paso, importaremos las bibliotecas necesarias, incluyendo Matplotlib, NumPy y los colores de Matplotlib.

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.colors as colors

Crear datos sintéticos

En este paso, crearemos un conjunto de datos sintético que consta de dos curvas con forma de "hacha", una negativa y una positiva, donde la amplitud de la curva positiva es ocho veces mayor que la de la curva negativa. Luego, aplicaremos SymLogNorm para visualizar los datos.

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

En este paso, aplicaremos SymLogNorm a los datos sintéticos y visualizaremos los 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

En este paso, aplicaremos AsinhNorm a los datos sintéticos y visualizaremos los 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()

Resumen

En este laboratorio, aprendimos cómo usar SymLogNorm y AsinhNorm para mapear mapas de colores en datos no lineales. Al aplicar estos métodos de normalización, podemos visualizar los datos de manera más precisa y discernir los detalles de los datos con mayor facilidad.