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.