Introducción
Matplotlib es una poderosa biblioteca de visualización de datos en Python. Proporciona una variedad de herramientas para crear una amplia gama de gráficos, diagramas y trazados. Una de las características más potentes de Matplotlib es su capacidad para escalar datos. Esta práctica te introduce a la AsinhScale, que es una transformación que permite trazar cantidades que cubren un rango dinámico muy amplio que incluye valores positivos y negativos.
Consejos sobre la VM
Una vez finalizada la inicialización de la VM, haz 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 tengas que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.
Si tienes problemas durante el aprendizaje, no dudes en preguntar a Labby. Proporciona retroalimentación después de la sesión y resolveremos rápidamente el problema para ti.
Instalar Matplotlib
Antes de comenzar, asegúrate de que Matplotlib esté instalado. Puedes instalarlo utilizando el comando pip de la siguiente manera:
pip install matplotlib
Importar las bibliotecas necesarias
Para utilizar la AsinhScale, necesitamos importar la biblioteca Matplotlib y la biblioteca numpy. Numpy es una poderosa biblioteca de cómputo numérico en Python que se utiliza a menudo en conjunto con Matplotlib.
import matplotlib.pyplot as plt
import numpy as np
Crear datos de muestra
Antes de poder trazar datos utilizando la AsinhScale, necesitamos crear algunos datos de muestra. Crearemos un gráfico de línea simple utilizando el método linspace de numpy.
## Prepare sample values for variations on y=x graph:
x = np.linspace(-3, 6, 500)
Comparar el comportamiento de "symlog" y "asinh" en el gráfico de muestra y = x
Compararemos el comportamiento de "symlog" y "asinh" en un gráfico de muestra y = x. Trazaremos el mismo gráfico dos veces, una vez con "symlog" y una vez con "asinh".
fig1 = plt.figure()
ax0, ax1 = fig1.subplots(1, 2, sharex=True)
ax0.plot(x, x)
ax0.set_yscale('symlog')
ax0.grid()
ax0.set_title('symlog')
ax1.plot(x, x)
ax1.set_yscale('asinh')
ax1.grid()
ax1.set_title('asinh')
Comparar gráficos de "asinh" con diferentes parámetros de escala "linear_width"
Ahora compararemos gráficos de "asinh" con diferentes parámetros de escala "linear_width". Trazaremos tres gráficos con diferentes valores de "linear_width".
fig2 = plt.figure(layout='constrained')
axs = fig2.subplots(1, 3, sharex=True)
for ax, (a0, base) in zip(axs, ((0.2, 2), (1.0, 0), (5.0, 10))):
ax.set_title(f'linear_width={a0:.3g}')
ax.plot(x, x, label='y=x')
ax.plot(x, 10*x, label='y=10x')
ax.plot(x, 100*x, label='y=100x')
ax.set_yscale('asinh', linear_width=a0, base=base)
ax.grid()
ax.legend(loc='best', fontsize='small')
Comparar escalas "symlog" y "asinh" en números aleatorios distribuidos según una ley de Cauchy en 2D
Finalmente, compararemos las escalas "symlog" y "asinh" en números aleatorios distribuidos según una ley de Cauchy en 2D. Trazaremos el mismo gráfico dos veces, una vez con "symlog" y una vez con "asinh".
fig3 = plt.figure()
ax = fig3.subplots(1, 1)
r = 3 * np.tan(np.random.uniform(-np.pi / 2.02, np.pi / 2.02,
size=(5000,)))
th = np.random.uniform(0, 2*np.pi, size=r.shape)
ax.scatter(r * np.cos(th), r * np.sin(th), s=4, alpha=0.5)
ax.set_xscale('asinh')
ax.set_yscale('symlog')
ax.set_xlabel('asinh')
ax.set_ylabel('symlog')
ax.set_title('2D Cauchy random deviates')
ax.set_xlim(-50, 50)
ax.set_ylim(-50, 50)
ax.grid()
Resumen
Esta práctica presentó la AsinhScale en Matplotlib, que es una transformación que permite trazar cantidades que cubren un rango dinámico muy amplio que incluye valores positivos y negativos. Aprendimos cómo crear datos de muestra y cómo trazar gráficos con "symlog" y "asinh". También aprendimos cómo comparar gráficos de "asinh" con diferentes parámetros de escala y cómo comparar las escalas "symlog" y "asinh" en números aleatorios distribuidos según una ley de Cauchy en 2D.