Introducción
En este laboratorio, aprenderá a usar diferentes propiedades de los marcadores para trazar conjuntos de datos multivariados utilizando la librería Matplotlib de Python. En particular, aprenderá a representar un lanzamiento de béisbol exitoso como una cara sonriente con el tamaño del marcador mapeado a la habilidad del lanzador, la rotación del marcador al ángulo de despegue y la fuerza al color del marcador.
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 bibliotecas
En este paso, importará las bibliotecas necesarias para este laboratorio. En particular, importará Matplotlib, Numpy y varios módulos de Matplotlib como MarkerStyle, TextPath y Affine2D.
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import Normalize
from matplotlib.markers import MarkerStyle
from matplotlib.text import TextPath
from matplotlib.transforms import Affine2D
Definir símbolos de éxito
En este paso, definirá los tres símbolos de éxito que se usarán para representar el éxito de un lanzamiento de béisbol. En particular, definirá una cara sonriente para un lanzamiento exitoso, una cara neutral para un lanzamiento parcialmente exitoso y una cara triste para un lanzamiento no exitoso.
SUCCESS_SYMBOLS = [
TextPath((0, 0), "☹"),
TextPath((0, 0), "😒"),
TextPath((0, 0), "☺"),
]
Generar datos aleatorios
En este paso, generará datos aleatorios para la habilidad del lanzador, el ángulo de despegue, la fuerza, el éxito y la posición. En particular, generará 25 puntos de datos para cada variable, excepto para la posición, que tendrá 2 coordenadas para cada punto de datos.
N = 25
np.random.seed(42)
skills = np.random.uniform(5, 80, size=N) * 0.1 + 5
takeoff_angles = np.random.normal(0, 90, N)
thrusts = np.random.uniform(size=N)
successful = np.random.randint(0, 3, size=N)
positions = np.random.normal(size=(N, 2)) * 5
data = zip(skills, takeoff_angles, thrusts, successful, positions)
Definir mapa de colores
En este paso, definirá el mapa de colores que se usará para mapear la fuerza del lanzamiento al color del marcador. En particular, utilizará el mapa de colores "plasma" de Matplotlib.
cmap = plt.colormaps["plasma"]
Crear gráfico
En este paso, creará el gráfico utilizando los datos aleatorios generados anteriormente. En particular, graficará cada punto de datos como un marcador con el símbolo de éxito determinado por la variable de éxito, el tamaño determinado por la variable de habilidad, la rotación determinada por la variable de ángulo de despegue y el color determinado por la variable de fuerza.
fig, ax = plt.subplots()
fig.suptitle("Throwing success", size=14)
for skill, takeoff, thrust, mood, pos in data:
t = Affine2D().scale(skill).rotate_deg(takeoff)
m = MarkerStyle(SUCCESS_SYMBOLS[mood], transform=t)
ax.plot(pos[0], pos[1], marker=m, color=cmap(thrust))
fig.colorbar(plt.cm.ScalarMappable(norm=Normalize(0, 1), cmap=cmap),
ax=ax, label="Normalized Thrust [a.u.]")
ax.set_xlabel("X position [m]")
ax.set_ylabel("Y position [m]")
Mostrar gráfico
En este paso, mostrará el gráfico utilizando la función show() de Matplotlib.
plt.show()
Resumen
En este laboratorio, aprendiste cómo utilizar diferentes propiedades de los marcadores para graficar conjuntos de datos multivariados utilizando la biblioteca Matplotlib de Python. En particular, aprendiste cómo representar un lanzamiento exitoso de béisbol como un emoticono con el tamaño del marcador mapeado a la habilidad del lanzador, la rotación del marcador al ángulo de despegue y la fuerza al color del marcador. Siguiendo los pasos descritos en este laboratorio, puedes crear gráficos similares para tus propios conjuntos de datos multivariados.