Asignación de Propiedades de Marcadores a Datos Multivariados

PythonPythonBeginner
Practicar Ahora

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

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

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.