Mapeando Propriedades de Marcadores para Dados Multivariados

Beginner

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

Introdução

Neste laboratório, você aprenderá como usar diferentes propriedades de marcadores para plotar conjuntos de dados multivariados usando a biblioteca Matplotlib do Python. Especificamente, você aprenderá como representar um arremesso de beisebol bem-sucedido como um rosto sorridente, com o tamanho do marcador mapeado para a habilidade do arremessador, a rotação do marcador para o ângulo de lançamento e o impulso para a cor do marcador.

Dicas da 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 Bibliotecas

Nesta etapa, você importará as bibliotecas necessárias para este laboratório. Especificamente, você importará Matplotlib, Numpy e vários módulos de Matplotlib, como MarkerStyle, TextPath e 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 Sucesso

Nesta etapa, você definirá os três símbolos de sucesso que serão usados para representar o sucesso de um arremesso de beisebol. Especificamente, você definirá um rosto sorridente para um arremesso bem-sucedido, um rosto neutro para um arremesso parcialmente bem-sucedido e um rosto triste para um arremesso malsucedido.

SUCCESS_SYMBOLS = [
    TextPath((0, 0), "☹"),
    TextPath((0, 0), "😒"),
    TextPath((0, 0), "☺"),
]

Gerar Dados Aleatórios

Nesta etapa, você gerará dados aleatórios para a habilidade do lançador, ângulo de lançamento (take-off angle), impulso (thrust), sucesso e posição. Especificamente, você gerará 25 pontos de dados para cada variável, exceto para a posição, que terá 2 coordenadas para cada ponto de dados.

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 Cores

Nesta etapa, você definirá o mapa de cores que será usado para mapear o impulso (thrust) do arremesso para a cor do marcador. Especificamente, você usará o mapa de cores "plasma" do Matplotlib.

cmap = plt.colormaps["plasma"]

Criar Gráfico

Nesta etapa, você criará o gráfico usando os dados aleatórios gerados anteriormente. Especificamente, você plotará cada ponto de dados como um marcador com o símbolo de sucesso determinado pela variável de sucesso, o tamanho determinado pela variável de habilidade (skill), a rotação determinada pela variável ângulo de lançamento (take-off angle) e a cor determinada pela variável impulso (thrust).

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]")

Exibir Gráfico

Nesta etapa, você exibirá o gráfico usando a função show() do Matplotlib.

plt.show()

Resumo

Neste laboratório, você aprendeu como usar diferentes propriedades de marcadores para plotar conjuntos de dados multivariados usando a biblioteca Matplotlib do Python. Especificamente, você aprendeu como representar um lançamento de beisebol bem-sucedido como um rosto sorridente com o tamanho do marcador mapeado para a habilidade (skill) do lançador, a rotação do marcador para o ângulo de lançamento (take-off angle) e o impulso (thrust) para a cor do marcador. Seguindo as etapas descritas neste laboratório, você pode criar gráficos semelhantes para seus próprios conjuntos de dados multivariados.